Page 1 sur 1

Redirection de page incorrecte

Posté : 13 juin 2008, 12:18
par toshiro92
Bonjour,

j'ai un problème assez étrange, j'ai une page d'authentification en php, avec redirection en cas d'erreur, et je tombe sur cette page quand je clique sur connexion:

Image

voici ma page index.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
	background-image: url(img/fondindex.jpg);
	background-position:inherit;
	background-repeat:no-repeat;
	background-attachment:fixed;
}
-->
</style></head>

<body>
  <p><span class="Style4"><?php if (isset($msg_erreur)){ echo $msg_erreur; } ?></span></p>
  <form id="form1" name="form1" method="post" action="verif.php">
  <table width="347" border="0">
    <tr>
      <td width="146" class="Style1">Nom d'utilisateur :</td>
      <td width="191">
        <label>
          <input name="psd" type="text" class="style33" id="psd" size="30" maxlength="20" />
          </label>      </td>
    </tr>
    <tr>
      <td class="Style1">Mot de passe :</td>
      <td><label>
        <input name="mdp" type="password" class="style33" id="mdp" value="" size="30" maxlength="20"  />
      </label></td>
    </tr>
    <tr>
      <td colspan="2"><div align="center">
        <label>
        <input name="button" type="submit" class="Style2" id="button" value="Connexion" />
        </label>
      </div></td>
      </tr>
  </table>
  </form>
  <p>&nbsp;</p>
</div>
</body>
</html>
et la page verif .php:
<?php
session_start();
include "connexion.php";

$psd=$_POST["psd"];
$mdp=$_POST["mdp"];
$mdp=sha1($mdp);
$requete= "select user_name from identification where user_name='$psd'";
  $resultat=mysql_query($requete,$connexion)
  			or die("La requête à echoué");
  $num= mysql_num_rows($resultat);
   if($num==1)
   {
      $requete= "select user_name from identification where user_name='$_POST[psd]' 
	  			 AND password='$mdp'";
$resultat2=mysql_query($requete,$connexion)
  			or die("La requête 2 à echoué");
$row=mysql_fetch_assoc($resultat2);
 if($row)
 {
   $_SESSION['auth']="yes";
   header("location: index2.php");
 }
 else
  {
    $message_erreur="Le nom d'utilisateur existe, mais le mot de passe est incorrect ! Réessayez. <br>";
	extract($_POST);
	include("index.php");
  }
  }
  elseif ($num == 0)  //utilisateur introuvable
  {
    $message_erreur=" le nom d'utilisateur rentré n'existe pas ! Réessayez. <br>";
	include("index.php");
  }
?>
Quel est le problème ? Je ne bloque pourtant pas les cookies et je ne devrais pas en avoir besoin non ?

Posté : 13 juin 2008, 12:20
par Vurtu
Aprioris, c'est un problème de redirection infinie
(une page qui redirige vers elle même, ou alors index redirige vers index2, qui redirige vers index ... en boucle)

Posté : 13 juin 2008, 13:07
par toshiro92
Merci pour ta réponse, en effet j'ai changé la page à rediriger, et tout refonctionne.

Par contre, pour protéger mes pages, j'ai mis le code suivant:
<?
session_start();
if (@$_SESSION['auth'] !="yes")
{
  header("location: erreur.php");
  exit();
}
?>
Mais la page est toujours redirigé, est ce que je me suis trompé pour ouvrir une session ?

Posté : 13 juin 2008, 13:38
par Vurtu
A tout hazard, essais ce code :
<?
session_start();
if ( !isset($_SESSION['auth']) || $_SESSION['auth'] !="yes" )
{
  header("location: erreur.php");
  exit();
}
?>
En règle générale, il faut éviter d'utiliser @ qui sert à masquer les erreurs
Si c'est bien codé, il n'y a pas d'erreurs, donc inutile de les masquer :)

Posté : 13 juin 2008, 14:37
par Sékiltoyai
Et plutôt que d'utiliser des chaines de caractère lorsque tu veux stocker une valeur booléenne, les booléens false et true existent…