Page se recharge sans cesse apres mot de passe

Eléphanteau du PHP | 25 Messages

31 janv. 2009, 22:36

j'ai une page ident.php qui me permet lorsque le bon login et mot de passe sont rentrés d'accèder à ma page d'administration. Sous IE que les informations saisies soient correctes ou erronées, lorsque je valide, la page boucle sur elle même.

Tout fonctionne parfaitement sous Firefox (comme c'est étonnant :lol: ).

Quelqu'un à t-il une ch'tite idée svp.

ma page d'identification :

Code : Tout sélectionner

<?php session_start(); echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; echo '<html>'; echo '<head>'; echo '<link rel="shortcut icon" href="images/page.ico"/>'; echo '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'; echo '<title>Formulaire Modification NEWS</title>'; echo '<link href="style1.css" rel="stylesheet" type="text/css">'; echo '</head>'; echo '<body>'; echo '<center>'; echo '<div id="fond">'; include 'entete.php'; include 'gauche.php'; include 'droite.php'; echo '<div style="width:550px;height:600px;margin-top:10px;margin-left:7px;float:left">'; echo '<div style="width:400px;height:25px;background:url(images/identification.png) left no-repeat; padding-left:50px">'; echo '<font style="color:#942431"><b>'; echo 'IDENTIFICATION REQUISE';echo '</b>'; echo '<br/>';echo '<br/>';echo '<br/>'; echo '<b>';echo'<center>'; echo 'Cette section est réservée à l\'administrateur du site';echo'</b>';echo'</br>';echo'</br>';echo'</center>';echo'</b>'; define("LOGIN","essai"); define("MDP","coucou"); //Test si les champs du formulaire sont remplis if ((isset($_POST['lelogin']))&&(isset($_POST['lemotdepasse']))){ //alors attribution des valeurs $_SESSION['LOG']=$_POST['lelogin']; $_SESSION['PASS']=$_POST['lemotdepasse']; //------------------------------ } //si les variables de session sont vides , affichage du formulaire if ((empty($_SESSION['LOG']))&&(empty($_SESSION['PASS']))){; //formulaire echo '<form method="POST" action="ident.php">'; echo 'Login : '; echo '<input type="text" name="lelogin">'; echo '<br/>';echo '<br/>'; echo 'Mot de passe : '; echo '<input type="password" name="lemotdepasse">'; echo '<br/>';echo '<br/>'; echo '<input type="submit" value="OK">'; echo '</form>'; //--------------- //si les valeurs saisies sont correctes alors affichage de la page } elseif(($_SESSION['LOG']==LOGIN)&&($_SESSION['PASS']==MDP)){ echo '<meta http-equiv="refresh" content="0;formnews.php">'; //header('Location: formnews.php'); } else { //sinon message d'erreur echo '<center>'; echo '<img src="images/error.png" alt="ERREUR !" title="Login incorrect">'; echo '<br/>';echo '<br/>'; echo '<b>'; echo 'Identification erronée'; echo '</b>';echo '<br/>';echo '<br/>'; echo '<a href="logout.php">RETOUR</a>'; echo '</center>'; } ?>
et ma page à laquelle je dois accèder :

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <link rel="shortcut icon" href="images/page.ico"/> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Gestion des membres</title> <link href="style1.css" rel="stylesheet" type="text/css"> </head> <body> <center> <div id="fond"> <?php include 'entete.php'; include 'gauche.php'; include 'droite.php'; ?> <div style="width:550px;height:600px;margin-top:10px;margin-left:7px;float:left"> <div style="width:400px;height:25px;background:url(images/calend.png) left no-repeat; padding-left:50px"> <font style="color:#942431"><b> GESTION DES MEMBRES</b> </font> </div> <br/> Nombre de personnes inscrites à la newsletter : <span style="background-color:#f6eced"><b> <?php //Comptage nombre d'inscrits à la newsletter mysql_connect('localhost','alban','alban'); //Connection base de donnée mysql_select_db('alban'); //Selection de la base avec laquelle on veut travailler $res = mysql_query('SELECT COUNT(*) AS total FROM newsletter') OR die(mysql_error()); $row = mysql_fetch_assoc($res); echo $row['total']; //------------------------------------------------------ ?> <!--Création du mot de passe <?php function pwd($limit){ //Définition de la fonction avec le paramètre ".pwd(6)" $chars='abcdef123456'; //Plage de random caractère $max=strlen($chars)-1; //Longeur $pwd=""; //Définition de ma variable mot de pass for($i=0;$i<$limit;$i++){; //Choix aléatoire jusqu'a obtenir 6 caractère $pwd.=$chars{mt_rand(0,$max)}; } return $pwd; } ?> --> <!--Suppression depuis icône supprimer <?php if(isset($_GET['sup'])){ $sql='DELETE FROM newsletter WHERE id="'.$_GET['sup'].'"'; mysql_query($sql); echo mysql_error(); } ?> --> <!--Mise à jour du champ PASSWORD de la base de donnée pour la validation du compte <?php if(isset($_GET['valid'])){ $sql='UPDATE newsletter SET password="'.pwd(6).'" WHERE id="'.$_GET['valid'].'"'; mysql_query($sql); echo mysql_error(); } confirm.php ?> --> </b></span> <center> <table width="550" style="border:1px solid #666"> <caption> <h4>Membres inscrits</h4> </caption> <br/> <tr> <th scope="col" style="text-align:center">Noms</th> <th scope="col" style="text-align:center">Mail</th> <th scope="col" style="text-align:center">Bureau</th> <th scope="col" style="text-align:center">Adhérent</th> <th scope="col" style="text-align:center">Enfant</th> <th scope="col" style="text-align:center">Pass</th> <th scope="col" style="text-align:center"><img src="images/valid.png" alt="valider" title="Valider"/></th> <th scope="col" style="text-align:center"><img src="images/suppr.png" alt="supprimer" title="Supprimer"/> </th> </tr> <?php mysql_connect('localhost','alban','alban'); //Connection à la base de donnée mysql_select_db('alban'); //Sélection de la base de travail $res=mysql_query('SELECT*FROM newsletter ORDER BY date DESC'); //Intérrogatiopn de la base : Sélection de tous les enregistrements while($enreg=mysql_fetch_assoc($res)){ echo '<tr>'; echo '<td style="text-align:center">'.$enreg['nom'].'</td>'; echo '<td style="text-align:center">'.$enreg['mail'].'</td>'; echo '<td style="text-align:center">'.$enreg['bureau'].'</td>'; echo '<td style="text-align:center">'.$enreg['adherent'].'</td>'; echo '<td style="text-align:center">'.$enreg['enfant_adherent'].'</td>'; echo '<td style="text-align:center">'.$enreg['password'].'</td>'; echo '<td style="text-align:center">'; if(empty($enreg['password'])){ echo '<a href="?valid='.$enreg['id'].'"/>'; echo '<img src="images/valid.png" alt="valider" title="Valider"/>'; echo '</a>'; }else{ } echo '</td>'; echo '<td style="text-align:center">'; echo '<a href="?sup='.$enreg['id'].'" onclick="return confirm(\'Souhaitez vous réellement effacer ce membre de la base de données\')">'; //rechargement de la page avec paramètre de suppression echo '<img src="images/suppr.png" alt="supprimer" title="Supprimer"/>'; echo '</a>'; echo '</td>'; echo '</tr>'; } ?> </table><br/><br/> </center> <?php if(isset($_GET['valid'])){ $res=mysql_query('SELECT*FROM newsletter WHERE id="'.$_GET['valid'].'"'); //Intérrogatiopn de la base : Sélection de tous les enregistrements $enreg=mysql_fetch_assoc($res); echo '<div class="recap" style="text-align:center">'; echo '<img src="images/inf.png" alt="Infos" title="Information"/>'; echo '<br/>'; echo 'Bonjour '; echo $enreg['nom']; echo ', ';echo '<br/>';echo '<br/>'; echo 'Vous venez de validez l\'inscription à la newsletter de la Stéphanoise.';echo '<br/>';echo '<br/>'; echo 'Voici un récapitulatif des informations de l\'utilisateur :';echo '<br/>';echo '<br/>'; echo '-Nom : '.$enreg['nom'].'';echo '<br/>'; echo '-Adresse mail : '.$enreg['mail'].'';echo '<br/>';echo '<br/>'; echo 'Vos identifiants pour l\'accès à la section "REUNIONS" sont les suivants :';echo '<br/>';echo '<br/>'; echo 'Login : ';echo '<b>';echo '"'.$enreg['nom'].'"';echo '</b>';echo '<br/>'; echo 'Mot de passe : ';echo '<b>';echo '"'.$enreg['password'].'"';echo '</b>';echo '<br/>'; echo '</div>'; } mysql_close(); ?> </div> </body> </html>
Merci de votre aide.

Eléphant du PHP | 139 Messages

31 janv. 2009, 23:18

Le ; placé ici, c'est voulu?
if ((empty($_SESSION['LOG']))&&(empty($_SESSION['PASS']))){; 

ça marche ça?
echo '<meta http-equiv="refresh" content="0;formnews.php">'; 
Rencontres-tu le même problème en utilisant header?
header('Location: formnews.php'); 
exit();

Invité
Invité n'ayant pas de compte PHPfrance

31 janv. 2009, 23:34

Le ; est effectivement là par erreur. Sinon le refresh fonctionne très bien sous Firefox et cela ne fonctionne pas avec le header.

Eléphant du PHP | 139 Messages

01 févr. 2009, 02:39

Essaye ça:
echo '<meta http-equiv="refresh" content="0;url=http://127.0.0.1/formnews.php">';
Néanmoins, je pense que l'utilisation d'une redirection par header serait plus appropriée.
En revanche pour que le header fonctionne, il doit être utilisée avant d'envoyer des données html, sous peine de produire une erreur.

Exemple de code vite fait:
<?php
session_start();

define("LOGIN","essai");
define("MDP","coucou");

  //Test si les champs du formulaire sont remplis   
   if ((isset($_POST['lelogin']))&&(isset($_POST['lemotdepasse']))){
      
      //alors attribution des valeurs   
      $_SESSION['LOG']=$_POST['lelogin'];
      $_SESSION['PASS']=$_POST['lemotdepasse'];
      
      //Vérification du login et mot de passe 
       if (($_SESSION['LOG']==LOGIN)&&($_SESSION['PASS']==MDP)){;     
        header('Location: formnews.php'); 
        exit();
       }
     else {
       header('Location: ident.php'); 
        exit();
      }
}
?>

//Ensuite le html et le formulaire
       
Un lien pour la redirection
http://www.phpfrance.com/tutoriaux/inde ... edirection

Eléphanteau du PHP | 25 Messages

24 févr. 2009, 11:47

Désolé pour cette réponse tardive.

En premier lieu, j'avais essayer via un header mais j'ai aussi rencontré des problèmes, c'est pour cela que je suis passé par cette méthode.

Pour le moment je ne suis pas plus avancé, il faut que je vide le cache de IE et que je relance ce dernier sinon ma page passe son temps à boucler.

Des idées svp .... :idea:

ViPHP
ViPHP | 1996 Messages

24 févr. 2009, 13:27

L'idée est bonne mais j'ai l'impression que tu boucles sur un header dans cette portion de code:
elseif(($_SESSION['LOG']==LOGIN)&&($_SESSION['PASS']==MDP)){
      echo '<meta http-equiv="refresh" content="0;formnews.php">';
      //header('Location: formnews.php');

En effet $_SESSION['LOG']==LOGIN)&&($_SESSION['PASS']==MDP seront toujours vrai vu que tu les as défini en constante plus haut...
define("LOGIN","essai");
define("MDP","coucou"); 
La méthode la plus simple est de définir les variables de session juste avant l'header();
Tu testes d'abord si posté, ensuite si vide enfin si bon : voilà ce que j'ai fais à ma sauce avec un texte de retour dans le formulaire (comme les grands)... (bug non corrigé si il y en a)
<?php
if (!isset($_POST['lelogin']) or !isset($_POST['lemotdepasse'])) 
{
      //formulaire
      ?>
      <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
      <p>
         <label>Login : </label>
          <input type="text" name="lelogin" value="">
      </p>
      <p>
         <label>Mot de passe : </label>
         <input type="password" name="lemotdepasse" value="">
      </p>
      <input type="submit" value="OK">
      </form>
      <p>
        <?php 
        //texte de retour
        if (isset($_SESSION["texte_retour"]) && !empty ($_SESSION["texte_retour"]))
           echo $_SESSION["texte_retour"];
       ?>
       </p>
      <?php
}
 else //le formulaire a été posté
{
  $_SESSION["texte_retour"]  ="";
  if (!empty($_POST['lelogin']) or !empty($_POST['lemotdepasse'])) //un des deux est vides
  {
  $_SESSION["texte_retour"]  ="Un des deux input est vide";
  header ("Location:".$_SERVER["PHP_SELF"]);
  }
  else //posté + rempli
  {
  $login = addslashes ($_POST['lelogin']);
  $MDP = addslashes ($_POST['lemotdepasse'];

  //on vérifie si c'est le bon login et mot de passe
  // tu pourras mettre ici un test vers une base de donnée
  if ($login != LOGIN or $MDP != MDP) //un des deux au moins est faux
    {
      $_SESSION["texte_retour"]  ="Un des deux input est faux";
      header ("Location:".$_SERVER["PHP_SELF"]);
    }
  else //tout est OK
    {
      $_SESSION["LOG"] = $login;
      //je déconseille de mettre le mot de passe en session
      header('Location: formnews.php');
    }
  }
}

?>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 25 Messages

25 févr. 2009, 23:27

il faut donc que je mettre la portion de code en tout debut de ma page si je comprends. J'ai essayer en indiquant l'url LOCALHOST mais ca ne marche pas mieux.

En ce moment je suis comme ma page, je boucle en rond lol

Ce que je n'arrive pas a m'expliquer c'est que sous Firefox cela fonctionne sans problème donc soit ce dernier fait l'impasse sur les erreurs de codes soit mon code n'est pas si faux que cela.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Eléphanteau du PHP | 25 Messages

03 mars 2009, 10:16

Après de longs moments de reflexion et de recherches, j'ai enfin trouvé la solution : il fallait que dans ma ligne qui permettait le rafraichissement de ma page, je rajoute " url= " devant la page de destination.
echo '<meta http-equiv="refresh" content="0;url=formnews.php">'; 
Merci de votre aide