Page 1 sur 1

Page se recharge sans cesse apres mot de passe

Posté : 31 janv. 2009, 22:36
par Pombela
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.

Posté : 31 janv. 2009, 23:18
par rolusseum
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();

Posté : 31 janv. 2009, 23:34
par Invité
Le ; est effectivement là par erreur. Sinon le refresh fonctionne très bien sous Firefox et cela ne fonctionne pas avec le header.

Posté : 01 févr. 2009, 02:39
par rolusseum
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

Posté : 24 févr. 2009, 11:47
par Pombela
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:

Posté : 24 févr. 2009, 13:27
par Aureusms
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');
    }
  }
}

?>

Posté : 25 févr. 2009, 23:27
par Pombela
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]

Posté : 03 mars 2009, 10:16
par Pombela
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