Problème avec $_SESSION[]
Posté : 03 juin 2014, 17:19
Bonjour à tous, j'ai mon formulaire comme voici qui me sert de page de connexion :
Mon problème est le suivant, en fonction de certains paramètres je veux que ma variable de session qui me sert d'authentification soit false or true.
Donc dans mon cas j'ai 3 scénarios : 1- Si les variables POST ne sont pas présentes ou vides je veux que ma variable de session réponde : false. (logique me dirais vous). Pour l'instant il fait juste une redirection sur la page de connexion.
2- Le mot de passe et / ou le nom d'utilisateur saisie est incorrect, là encore il faudrait que ma variable de session réponde : false. Pour l'instant j'affiche juste un message d'erreur
3- Et enfin le 3ème cas où les identifiants sont corrects, je veux que ma variable de session réponde : true. Pour l'instant je fais une redirection sur le panel de connexion car je n'ai pas encore fait de page admin. Et justement c'est là que ma variable de session rentre en jeu, il faut que ma page admin soit accessible que si ma variable de session à comme valeure : true
Donc c'est un accès sécurisé normalement ? Vu que elle ne peut être : true , que si mes identifiants sont corrects.
Merci qui pourraient m'expliquer pourquoi mes variables de session ne fonctionnent pas.
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8"/>
<title>Pannel Admin</title>
<link rel="stylesheet" type="text/css" href="sshadmin.css"/>
</head>
<body>
<form method="post" action="login.php">
<p>
<label for="user">Login :</label> <input type="text" name="user" id="user" maxlength="20"/>
<label for="passwd">Mot de passe :</label> <br /> <input type="password" name="passwd" id="passwd" maxlength="25"/>
<input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>
Qui traite sur ma page login.php :
<?php
session_start();
header('Content-type: text/html; charset=UTF-8');
$user = (!isset($_POST['user']) OR empty($_POST['user'])) ? $user= null : $user= htmlspecialchars($_POST['user']);
$passwd = (!isset($_POST['passwd']) OR empty($_POST['passwd'])) ? $passwd= null : $passwd= htmlspecialchars($_POST['passwd']);
if ($user== null OR $passwd== null)
{
$_SESSION['authentification']= false;
$auth0= $_SESSION['authentification'];
header('Location: index.php'); }
else
{
try { $bdd = new PDO ('mysql:host=localhost;dbname=olympe','root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); }
catch (Exception $e) { exit('Erreur : '.$e->getMessage()); }
$login = $bdd->query('SELECT user, password FROM admin');
$admin = $login->fetch();
if (($user != $admin['user']) OR ($passwd != $admin['password']))
{
$_SESSION['authentification']= false;
$auth0= $_SESSION['authentification'];
echo("Accès refusé | Login ou Password erroné !");
}
else { $_SESSION['authentification']= true;
$auth0= $_SESSION['authentification'];
header('Location: index.php'); }
}
?>
Tout mon script pour l'instant marche correctement pour la validation des identifiants depuis le formulaire.Mon problème est le suivant, en fonction de certains paramètres je veux que ma variable de session qui me sert d'authentification soit false or true.
Donc dans mon cas j'ai 3 scénarios : 1- Si les variables POST ne sont pas présentes ou vides je veux que ma variable de session réponde : false. (logique me dirais vous). Pour l'instant il fait juste une redirection sur la page de connexion.
2- Le mot de passe et / ou le nom d'utilisateur saisie est incorrect, là encore il faudrait que ma variable de session réponde : false. Pour l'instant j'affiche juste un message d'erreur
3- Et enfin le 3ème cas où les identifiants sont corrects, je veux que ma variable de session réponde : true. Pour l'instant je fais une redirection sur le panel de connexion car je n'ai pas encore fait de page admin. Et justement c'est là que ma variable de session rentre en jeu, il faut que ma page admin soit accessible que si ma variable de session à comme valeure : true
Donc c'est un accès sécurisé normalement ? Vu que elle ne peut être : true , que si mes identifiants sont corrects.
Merci qui pourraient m'expliquer pourquoi mes variables de session ne fonctionnent pas.