Bonjour,

sur ma page d'accueil, j'ai un formulaire pour l'authentification dont l'action positionne une variable de session ($_SESSION['auth']) à true si les identifiants sont corrects, et si cette variable est à true, au lieu d'afficher le formulaire, j'affiche le site sur la page d'accueil (index.php) :

index.php :
Code php : 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
27
28
 
        echo "debug auth (index):".$_SESSION["auth"]."<br/>";
	if ( ! $_SESSION["auth"])
	{
		?>
		<form action="page/authenticate.php" method="get">
                <table style="height:68px;"><tr>
                <div>
		...
                <td><input style="background:transparent;border:none;" type="text" size="30" value="<?php echo (isset($_COOKIE['user']))?$_COOKIE['user']:'';?>"
                name="login2" /></td></tr>
 
               <td><input style="background:transparent;border:none;" type="password" size="30" value="<?php echo (isset($_COOKIE['pwd']))?$_COOKIE  
               ['pwd']:'';?>" name="pwd2" /></td></tr></table>
               <table>
               <tr style="height:40px;">
               <td>
               <input style="background:transparent;border:none;width:80px" type="submit"   name="login" value=""/></td></tr></table>
 
	       </div>
	       </form>
	<?php
 
	}
 
else {
// affichage du site
}

authenticate.php :
Code php : 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
27
28
29
30
31
32
33
34
35
36
37
 
function authentification()
{
		global $bdd;
 
		$auth=false;
 
		$sql = 'select * from `users`';
 
		$qid = $bdd->prepare($sql);
		$qid->execute();
		while ($row=$qid->fetch(PDO::FETCH_ASSOC) ) {
				$usr = $row['user']; 
				$password = $row['password'];  
				if (($usr == $_POST['login2']) && ($password == $_POST['pwd2'])) {
					$auth = true;
 
					$_SESSION['user']=$usr;
					$_SESSION['pass']=$password;
					$temps = 365*24*3600;
					if (isset($_POST['remember'])) {
						setcookie ("user",$usr, time() + $temps);
						setcookie ("pwd",$password, time() + $temps);
					}
					else {
						setcookie ("user","", time() + $temps);
						setcookie ("pwd","", time() + $temps);
					}						
				}
		  }
	$_SESSION['auth']=$auth;
 
 return $auth;
}
 $auth=authentification();
 header ("Location: $_SERVER[HTTP_REFERER]" );
 exit(); ?>

Mon souci, c'est que même si l'action met la variable de session à true, quand on revient dans index.php et qu'on la teste, elle est encore à false. Or même si c'est normal de la voir encore à false dans la page qui vient de la mettre à true, dans une autre page, elle devrait être vue à true, non ? Où est le bug ?