Créer un compte
Connexion

Problèmes avec PHP et js

Pour créer et répondre aux sujets, vous devez être connecté.
Ce sujet est résolu.
Pages: 1
Auteur Message
Spitfire 95
06/01/2011 à 19:29:25
Spitfire 95
Membre
Bonjour. Je suis bloqué quand mon code.
Un long et compliqué discours n'étant pas très pratique, je vous donne le lien vers une page de référence : http://free-apps.evoconcept.net/logiciels/antares/index.php

Et le code de ma popup (dl.php) :
<? require('../../head.php');?>
</head>
<body>
<div id="div_header" style="border-radius:15px;padding:5px;margin:5px;">
<?if($_GET['deb']==True)
    { ?><b>Mises à jour du paquet</b><br>
    Pour bénéficier des mises à jour de Antares installé par paquet Debian en même temps que les autres logiciels,
    par le biais de votre gestionnaire de paquets (apt-get, synaptic, ubuntu software center...),
    veuillez executer les commandes suivantes dans un terminal (en ayant les droits d\'administrateur) :<br>
    <div style="background:#000000;color:#ffffff;overflow-x:auto;border-radius:5px;margin:5px;padding:2px 3px 2px;white-space:nowrap;">
        echo "deb http://ppa.launchpad.net/aurelien-riv/free-apps/ubuntu lucid main" | sudo tee -a /etc/apt/sources.list<br>
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7F3730A9
    </div>
    <?}
else{?>
    <?if($_POST['submit']) {
        if($_POST['choix']=='https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb'){?>
            <script type="text/javascript"><!--
                width = 350; height = 180;
                if(window.innerWidth)
                {   var left = (window.innerWidth-width)/2;
                    var top= (window.innerHeight-height)/2;}
                else
                {   var left = (document.body.clientWidth-width)/2;
                    var top= (document.body.clientHeight-height)/2;}
                window.open("dl.php?deb=True","Information paquet debian","menubar=no,scrollbars=no,top="+top+",left="+left+",width="+width+",height="+height+"");}
            --></script>
        <?}
        if(isset($_POST['choix'])){?>
            <script type="text/javascript">this.close()</script>
            <? header('Location: '.$_POST['choix']);
        }}?>
       
    <form action="" method="post">
    <? if($_GET['src']==0){ ?>
    <input type="radio" name="choix" value="https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb"><img src="/images/common/mime/deb.png" alt='paquet debian'> Paquet deb<br>
    <? } else {?>
    <input type="radio" name="choix" value="http://free-apps.evoconcept.net/download.php?file=/logiciels/antares/antares.tar.gz"><img src="/images/common/mime/tar-gz.png" alt='archive tar.gz'> Archive tar.gz<br>
    <?}?>
    <br><input type='submit' name='submit' value='Télécharger'>
    </form>
    </div>
<?}?>
</body>
</html>
 
Donc les problèmes :
  • La popup d'aide ne s'ouvre pas
  • La popup en cour ne se ferme pas ( this.close() )

Je pense que les problèmes viennent de if($_POST['submit']) qui doit empêcher d'écrire dans la page (me demandez pas pourquoi je pense ça parce que ça me semble pas très logique), et de la redirection. Pourtant même en déplaçant le code de cette dernière, ça marche pas. Donc je reste sur l'hypothèse que mes scripts js ne sont pas écrits lors de la soumussion du formulaire.

Merci pour votre aide.

ybouane
07/01/2011 à 00:41:06
ybouane
Admin
Bonjour,
Un des problèmes, c'est que ton header(Location.... doit être mis avant tout code html:
http://php.net/manual/fr/function.header.php

Ce qui se passe, c'est que la redirection s'effectue, mais ta page ne s'affiche pas(car il y a une redirection).

La solution serait donc d'ouvrir une nouvelle pop-up avec le lien de téléchargement. et après, fermer la page actuelle.

<? require('../../head.php');?>
</head>
<body>
<div id="div_header" style="border-radius:15px;padding:5px;margin:5px;">
<?if($_GET['deb']==True)
    { ?><b>Mises à jour du paquet</b><br>
    Pour bénéficier des mises à jour de Antares installé par paquet Debian en même temps que les autres logiciels,
    par le biais de votre gestionnaire de paquets (apt-get, synaptic, ubuntu software center...),
    veuillez executer les commandes suivantes dans un terminal (en ayant les droits d\'administrateur) :<br>
    <div style="background:#000000;color:#ffffff;overflow-x:auto;border-radius:5px;margin:5px;padding:2px 3px 2px;white-space:nowrap;">
        echo "deb http://ppa.launchpad.net/aurelien-riv/free-apps/ubuntu lucid main" | sudo tee -a /etc/apt/sources.list<br>
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7F3730A9
    </div>
    <?}
else{?>
    <?if($_POST['submit']) {
        if($_POST['choix']=='https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb'){?>
            <script type="text/javascript"><!--
                width = 350; height = 180;
                if(window.innerWidth)
                {   var left = (window.innerWidth-width)/2;
                    var top= (window.innerHeight-height)/2;}
                else
                {   var left = (document.body.clientWidth-width)/2;
                    var top= (document.body.clientHeight-height)/2;}
                window.open("dl.php?deb=True","Information paquet debian","menubar=no,scrollbars=no,top="+top+",left="+left+",width="+width+",height="+height+"");}
            --></script>
        <?}
        if(isset($_POST['choix'])){?>
            <script type="text/javascript">window.open('<?php echo $_POST['choix']); ?>', '_blank');
                        this.close()</script>
            <?
        }}?>
       
    <form action="" method="post">
    <? if($_GET['src']==0){ ?>
    <input type="radio" name="choix" value="https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb"><img src="/images/common/mime/deb.png" alt='paquet debian'> Paquet deb<br>
    <? } else {?>
    <input type="radio" name="choix" value="http://free-apps.evoconcept.net/download.php?file=/logiciels/antares/antares.tar.gz"><img src="/images/common/mime/tar-gz.png" alt='archive tar.gz'> Archive tar.gz<br>
    <?}?>
    <br><input type='submit' name='submit' value='Télécharger'>
    </form>
    </div>
<?}?>
</body>
</html>

Cordialement :)

Image
Spitfire 95
07/01/2011 à 09:22:58
Spitfire 95
Membre
Merci. Donc voici mon code avec quelques améliorations et corrections :
<? require('../../head.php');?>
</head>
<body>
<div id="div_header" style="border-radius:15px;padding:5px;margin:5px;">
<?if($_GET['deb']==True){ ?>
    <b>Mises à jour du paquet</b><br>
    Pour bénéficier des mises à jour de Antares installé par paquet Debian en même temps que les autres logiciels,
    par le biais de votre gestionnaire de paquets (apt-get, synaptic, ubuntu software center...),
    veuillez executer les commandes suivantes dans un terminal (en ayant les droits d\'administrateur) :<br>
    <div style="background:#000000;color:#ffffff;overflow-x:auto;border-radius:5px;margin:5px;padding:2px 3px 2px;white-space:nowrap;">
        echo "deb http://ppa.launchpad.net/aurelien-riv/free-apps/ubuntu lucid main" | sudo tee -a /etc/apt/sources.list<br>
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7F3730A9
    </div>
    <?if($_GET['dl']==True){?><script type="text/javascript">window.location="https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb";</script>
<?}}else{?>
    <?if($_POST['submit']) {
        if(isset($_POST['choix'])){?>
            <? if($_POST['choix']=='https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb'){?>
                <script type="text/javascript">window.location="dl.php?deb=True&dl=True";</script>
            <?} else {?><script type="text/javascript">window.location="<? echo$_POST['choix'];?>";this.close()</script><?}}}?>
    <form action="" method="post">
        <? if($_GET['src']==0){ ?>
            <input type="radio" name="choix" value="https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb"><img src="/images/common/mime/deb.png" alt='paquet debian'> Paquet deb<br>
        <? } else {?>
            <input type="radio" name="choix" value="http://free-apps.evoconcept.net/download.php?file=/logiciels/antares/antares.tar.gz"><img src="/images/common/mime/tar-gz.png" alt='archive tar.gz'> Archive tar.gz<br>
        <?}?>
        <br><input type='submit' name='submit' value='Télécharger'>
    </form>
<?}?>
</div>
</body>
</html>
 
Je n'ai finalement conservé qu'une pop-up. Le seul problème qui me reste est pour fermer les fenêtres.
<script type="text/javascript">window.location="<? echo$_POST['choix'];?>";this.close()</script> Il ferme la fenêtre avant que la page ne soit chargé, donc le téléchargement ne se fait pas. La solution serait de dire au navigateur : while(True){ if(page_chargée) { this.close(); break;}}
Mais sur internet je n'ai pas trouvé de solution (claire) pour détecter si la page est bien chargée.
Quand à l'installation d'une balise onload sur body, ça me semble lourd pour mon système.
Merci pour votre aide.

ybouane
08/01/2011 à 03:27:49
ybouane
Admin
Bonjour,
lorsque tu redirige la page plus aucun script ne s'exécutera. c'est donc normal que quand tu essaye de fermer la fenêtre après l'avoir redirigée, ça ne fonctionne plus. c'est pour ça que dans le code que je t'ai donné, j'ai ouvert une nouvelle fenêtre et ensuite j'ai fermer la fenêtre de téléchargement.

Le problème, c'est qu'en fermant la fenêtre de téléchargement, le celle que je viens d'ouvrir se ferme aussi.
Il font donc ouvrir le téléchargement, sur la page de la fiche du logiciel.
Bref, je sais que c'est pas très clair, mais voici le code à utiliser:
<? require('../../head.php');?>
</head>
<body>
<div id="div_header" style="border-radius:15px;padding:5px;margin:5px;">
<?if($_GET['deb']==True)
    { ?><b>Mises à jour du paquet</b><br>
    Pour bénéficier des mises à jour de Antares installé par paquet Debian en même temps que les autres logiciels,
    par le biais de votre gestionnaire de paquets (apt-get, synaptic, ubuntu software center...),
    veuillez executer les commandes suivantes dans un terminal (en ayant les droits d\'administrateur) :<br>
    <div style="background:#000000;color:#ffffff;overflow-x:auto;border-radius:5px;margin:5px;padding:2px 3px 2px;white-space:nowrap;">
        echo "deb http://ppa.launchpad.net/aurelien-riv/free-apps/ubuntu lucid main" | sudo tee -a /etc/apt/sources.list<br>
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7F3730A9
    </div>
    <?}
else{?>
    <?if($_POST['submit']) {
        if($_POST['choix']=='https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb'){?>
            <script type="text/javascript"><!--
                width = 350; height = 180;
                if(window.innerWidth)
                {   var left = (window.innerWidth-width)/2;
                    var top= (window.innerHeight-height)/2;}
                else
                {   var left = (document.body.clientWidth-width)/2;
                    var top= (document.body.clientHeight-height)/2;}
                window.open("dl.php?deb=True","Information paquet debian","menubar=no,scrollbars=no,top="+top+",left="+left+",width="+width+",height="+height+"");}
            --></script>
        <?}
        if(isset($_POST['choix'])){?>
            <script type="text/javascript">window.opener.open('<?php echo $_POST['choix']); ?>', '_blank');
                        this.close()</script>
            <?
        }}?>
       
    <form action="" method="post">
    <? if($_GET['src']==0){ ?>
    <input type="radio" name="choix" value="https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb"><img src="/images/common/mime/deb.png" alt='paquet debian'> Paquet deb<br>
    <? } else {?>
    <input type="radio" name="choix" value="http://free-apps.evoconcept.net/download.php?file=/logiciels/antares/antares.tar.gz"><img src="/images/common/mime/tar-gz.png" alt='archive tar.gz'> Archive tar.gz<br>
    <?}?>
    <br><input type='submit' name='submit' value='Télécharger'>
    </form>
    </div>
<?}?>
</body>
</html>

Cordialement :)

Image
Spitfire 95
08/01/2011 à 08:30:42
Spitfire 95
Membre
Mais cela pose tout de même deux problèmes :
-Le navigateur tolérera une pop-up, mais deux il propose déjà de bloquer les pop-ups du site (Google Chrome 10 Linux me le propose en tous cas).
-Une pop-up vide n'est pas agréable pour le visiteur, et même en mettant les dimensions 0x0+0+0 (donc 0px de l, 0px de L, placé en haut à gauche, dit comme en Python-Tkinter), celle ci ne prend pas ces dimensions extrêmes et reste visible. Y-a-t-il une propriété pour la rendre invisible ?
Sinon je changerais le code de /download.php pour que if($_GET['close']==1){ echo '<script type="text/javascript">this.close()</script>

ybouane
09/01/2011 à 20:09:51
ybouane
Admin
Bonjour,
le code que je t'ai donné fonctionne avec la firefox, opera.. mais pas avec chrome, voici un code qui fonctionne aussi avec chrome:
<? require('../../head.php');?>
</head>
<body>
<div id="div_header" style="border-radius:15px;padding:5px;margin:5px;">
<?if($_GET['deb']==True)
    { ?><b>Mises à jour du paquet</b><br>
    Pour bénéficier des mises à jour de Antares installé par paquet Debian en même temps que les autres logiciels,
    par le biais de votre gestionnaire de paquets (apt-get, synaptic, ubuntu software center...),
    veuillez executer les commandes suivantes dans un terminal (en ayant les droits d\'administrateur) :<br>
    <div style="background:#000000;color:#ffffff;overflow-x:auto;border-radius:5px;margin:5px;padding:2px 3px 2px;white-space:nowrap;">
        echo "deb http://ppa.launchpad.net/aurelien-riv/free-apps/ubuntu lucid main" | sudo tee -a /etc/apt/sources.list<br>
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7F3730A9
    </div>
    <?}
else{?>
    <?if($_POST['submit']) {
        if($_POST['choix']=='https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb'){?>
            <script type="text/javascript"><!--
                width = 350; height = 180;
                if(window.innerWidth)
                {   var left = (window.innerWidth-width)/2;
                    var top= (window.innerHeight-height)/2;}
                else
                {   var left = (document.body.clientWidth-width)/2;
                    var top= (document.body.clientHeight-height)/2;}
                window.open("dl.php?deb=True","Information paquet debian","menubar=no,scrollbars=no,top="+top+",left="+left+",width="+width+",height="+height+"");}
            --></script>
        <?}
        if(isset($_POST['choix'])){?>
            <script type="text/javascript">window.opener.open('<?php echo $_POST['choix']); ?>', '_self');
                        this.close()</script>
            <?
        }}?>
       
    <form action="" method="post">
    <? if($_GET['src']==0){ ?>
    <input type="radio" name="choix" value="https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb"><img src="/images/common/mime/deb.png" alt='paquet debian'> Paquet deb<br>
    <? } else {?>
    <input type="radio" name="choix" value="http://free-apps.evoconcept.net/download.php?file=/logiciels/antares/antares.tar.gz"><img src="/images/common/mime/tar-gz.png" alt='archive tar.gz'> Archive tar.gz<br>
    <?}?>
    <br><input type='submit' name='submit' value='Télécharger'>
    </form>
    </div>
<?}?>
</body>
</html>

Cordialement :)

Image
Spitfire 95
10/01/2011 à 17:52:44
Spitfire 95
Membre
J'ai réussi en reprenant mon code puis en changeant par la ligne que vous avez changé, et ça fonctionne parfaitement et en ne nuisant pas à la navigation (contrairement aux doubles popups).
<? require('../../head.php');?>
</head>
<body>
<div id="div_header" style="border-radius:15px;padding:5px;margin:5px;">
<?if($_GET['deb']==True){ ?>
    <b>Mises à jour du paquet</b><br>
    Pour bénéficier des mises à jour de Antares installé par paquet Debian en même temps que les autres logiciels,
    par le biais de votre gestionnaire de paquets (apt-get, synaptic, ubuntu software center...),
    veuillez executer les commandes suivantes dans un terminal (en ayant les droits d\'administrateur) :<br>
    <div style="background:#000000;color:#ffffff;overflow-x:auto;border-radius:5px;margin:5px;padding:2px 3px 2px;white-space:nowrap;">
        echo "deb http://ppa.launchpad.net/aurelien-riv/free-apps/ubuntu lucid main" | sudo tee -a /etc/apt/sources.list<br>
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7F3730A9
    </div>
    <?if($_GET['dl']==True){?><script type="text/javascript">window.location="https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb";</script>
<?}}else{?>
    <?if($_POST['submit']) {
        if(isset($_POST['choix'])){?>
            <? if($_POST['choix']=='https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb'){?>
                <script type="text/javascript">window.location="dl.php?deb=True&dl=True";</script>
            <?} else {?><script type="text/javascript">window.opener.open('<?echo$_POST['choix'];?>','_self');this.close()</script><?}}}?>
    <form action="" method="post">
        <? if($_GET['src']==0){ ?>
            <input type="radio" name="choix" value="https://launchpad.net/~aurelien-riv/+archive/free-apps/+files/antares_7.0.2_all.deb"><img src="/images/common/mime/deb.png" alt='paquet debian'> Paquet deb<br>
        <? } else {?>
            <input type="radio" name="choix" value="http://free-apps.evoconcept.net/download.php?file=/logiciels/antares/antares.tar.gz"><img src="/images/common/mime/tar-gz.png" alt='archive tar.gz'> Archive tar.gz<br>
        <?}?>
        <br><input type='submit' name='submit' value='Télécharger'>
    </form>
<?}?>
</div>
</body>
</html>
 

Merci.

Pages: 1