authentification avec une variable de session
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:
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:
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 ?