IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

variable ignorée pour redirection


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Points : 24
    Points
    24
    Par défaut variable ignorée pour redirection
    bonjour à tous, cela fait plusieurs heures que je me tire les cheveux à comprendre pourquoi mon satané script ignore une de mes variables pour directement aller vers une redirection -__-.

    voici un exemple du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    if(isset($_POST['valid'])){
    $msg ="Ca fonctionne";
    }
     
    if (isset($msg)){
    echo $msg;
    sleep(5);
    echo "<script language='javascript'
          type='text/javascript'>
          <!--
          window.location.replace(
           'index.php');
           -->
           </script>";
    }
     
    echo"<form action='form.php' method='POST'>
         <input type='submit' name='valid' value='valider'/></form>";
     
    ?>
    Voila comme vous pouvez le voir ce formulaire n'envoie rien de spécial mais quand on appuis sur valider une variable $msg est créée.

    si cette variable existe alors on l'affiche, puis on attends 10 secondes et on redirige.

    Or le script n'agit pas du tout comme cela, des qu'on clic sur valider le sleep s'active donc 10 secondes et bing redirection.

    à aucun moment mon echo $msg n'a lieu. J'avoue ne pas comprendre pourquoi
    j'espère que quelqu'un ici pourra m'ouvrir les yeux ces 3 dernières nuit blanches de codages intensif m'ont un peu tuées

    Bref help, pourquoi le serveur web ne suis pas mes instructions a la lettre ^^ ?

  2. #2
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Bonsoir,
    Je pense que c'est normal, puisque lorsque tu fais le "submit" de ton formulaire ta page ne se réaffiche pas donc il ne peut pas faire l' "echo" de ta variable "$msg".
    Par contre tu peux ajouter un alert dans le code javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?php
    if(isset($_POST['valid'])){
    $msg ="Ca fonctionne";
    }
     
    if (isset($msg)){
    sleep(5);
    echo "<script language='javascript'
          type='text/javascript'>
          <!--
    	  alert('".$msg."');
          window.location.replace(
           'index.php');
           -->
           </script>";
    }	 
     
    echo"<form action='form.php' method='POST'>
         <input type='submit' name='valid' value='valider'/></form>";
     
    ?>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    J'ai en effet utilisé Javascript pour palier à ce problème mais techniquement le code aurait du fonctionner, lors de l'envoi d'un submit vers lui même, la page est rafraichie et dois donc theoriquement afficher les echos.

  4. #4
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Autant pour moi,
    Ta page se réaffiche bien mais le soucis c'est que c'est tellement rapide entre le moment où elle s'affiche à nouveau et le moment où on est redirigé vers la page index.php qu'on a pas le temps de voir le message affiché ...

  5. #5
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Bonjour,

    en exécutant la commande sleep tu suspends l'exécution de ton script et donc le flux de sortie (ton echo) qui n'est renvoyé qu'aprés les 5 secondes c'est donc normal que la redirection javascrpit se fasse instantanément. Tu as 2 solutions, soit utiliser une redirection html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?php
    if(isset($_POST['valid'])){
    $msg ="Ca fonctionne";
    }
     
    if (isset($msg)){
    echo $msg;
     
    echo '<META HTTP-EQUIV="Refresh" CONTENT="5;URL=index.php">';
    }
     
    echo"<form action='form.php' method='POST'>
         <input type='submit' name='valid' value='valider'/></form>";
     
    ?>
    soit une redirection javascript couplée avec un settimeout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    if(isset($_POST['valid'])){
    $msg ="Ca fonctionne";
    }
     
    if (isset($msg)){
    echo $msg;
     
    echo "<script language='javascript'
          type='text/javascript'>
    	  
    	  
          <!--
    	  function rediriger() {
    		window.location.replace('index.php');
    	  }
    	   
    	  setTimeout('rediriger()' , 5000);
           -->
           </script>";
    }
     
    echo"<form action='form.php' method='POST'>
         <input type='submit' name='valid' value='valider'/></form>";
     
    ?>
    Personnellement j'opterais pour la redirection HTML.

Discussions similaires

  1. [JSTL] Récupérer une variable JSTL pour l'utiliser avec JSP
    Par pitit777 dans le forum Taglibs
    Réponses: 3
    Dernier message: 28/03/2006, 09h47
  2. [timer] Compte à rebours pour redirection !
    Par Raideman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2005, 20h07
  3. [TP7] Renvoyer des infos dans la console pour redirection
    Par Natopsi dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 05/11/2005, 18h21
  4. variable globale pour plusieurs Form
    Par ced2004 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/04/2005, 08h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo