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 ?
Partager