8768 sujets

Développement web côté serveur, CMS

Lorsque je clique sur le bouton "connexion", Chrome rafraichit la page et la remet au démarrage au lieu de m'afficher les variables $username et $password.

 <?php
    // define variables and set to empty values
    $username = $password = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $username = test_input($_POST["username"]);
      $password = test_input($_POST["password"]);
        echo $username;
        echo $password;
    
    }

    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
     $data = mysqli_real_escape_string($data);
      $data = htmlspecialchars($data);
      return $data;
    }
    ?>
</head>
  
<body>
  
  	<div class="container">
  	
  		<div class="logo">
            
            <div id="realizer">realizer   </div>  
            
            <div id="autoCoaching">auto-coaching</div>

        </div>
        
        <div id="connexion" align="center">  
          <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 

             <div id="username">     
                <input id="username" type="text" placeholder="votre identifiant"»
            name="username" title="Username"  value="<?php echo $username;?>">
           
                </div>

                <div id="password" >
                <input id="password-field" type="password" placeholder="votre mot de passe" »
            name="password" title="Password" value="<?php echo $password;?>">
                </div>

                <div id="submit" style="position:relative; top:15px;" >
                <input type="submit" name="submit" »
            value="connexion" >
                </div>

            </form>
         </div>

Modifié par fredericmarcel (27 Nov 2015 - 11:11)
En regardant rapidement,
dans action tu rappelle la même page (j'ai pas trop pigé le htmlspecialchars mais bon..)

Donc quand on revient sur la meme page, si il y a eu un post, alors tu fais des echo.
(si cela fonctionne,) tes echo $username; et echo $password; sont dans le head de la page html et s'affiche donc dans une partie non visible de la page. Puis ensuite bah le chargement se poursuit ce qui re affiche ta page html.

Du coup en 'solution' je dirais : soit tu ouvres ton code php dans la balise body pour que cela s'ecrivent dans la page html avec le formulaire a la suite, soit tu rajoutes un else{ tout le reste } pour que cela n'affiche que tes echos je suppose
Modifié par mathieu1004 (27 Nov 2015 - 16:13)