Salut à tous,
J'ai fait un petit script de connexion/déconnexion en PHP pour mon site . Il semble fonctionner.
Néanmoins, je n'arrive pas à accéder aux variables de sessions que je définis en me connectant sur d'autres pages.
En effet, après m'être connecté je teste sur une autre page :
<?php
session_start();
echo $_SESSION['login']
?>
Et j'obtiens une erreur : "Notice: Undefined index: login."
Voilà le script en question, merci d'avance pour votre aide.
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
if(!isset($_SESSION['login'])) /* Si l'utilisateur n'est pas connecté on lui propose le formulaire*/
{
echo "Vous n'etes pas connecte, connectez-vous : ";
?>
<form method='post' action="" enctype='multipart/form-data'>
Pseudo : <input name="login" type="text" id="pseudo" size=12/>
Mot de passe : <input name="pass" type="password" id="mdp" size=12 />
<input type="submit" value="Se connecter" />
</form>
<?php
}
else
{
$login=$_SESSION['login']; /*Sinon, on lui signale qu'il est connecté et on lui propose de se déconnecter*/
echo "Connecte en tant que $login";
?>
<form method='post' action="" enctype='multipart/form-data'>
<input type="submit" value="Se deconnectez" />
</form>
<?php session_destroy();
}
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '', $pdo_options);
if(!empty($_POST))
{
if (!empty($_POST['login']) && !empty($_POST['pass']))
{
$login = $_POST['login'];
$reponse = $bdd->query("SELECT pwd FROM tbl_user WHERE login='". $login ."'");
$donnees = $reponse->fetch();
if($donnees['pwd'] != $_POST['pass'])
{
$erreur = 'Mauvais login / password. Merci de recommencer';
}
else
{
$_SESSION['login']= $_POST['login'];
header('location:#'); /* Après s'être connecté, la variable de session login sera désormais définie. On actualise */
}
}
else
{
$erreur = 'Vous avez oublie de remplir un champ.';
}
}
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Novo denique perniciosoque exemplo idem Gallus ausus est inire flagitium grave, quod Romae cum ultimo dedecore temptasse.
</body>
</html>
P.S. : je suis conscient qu'il y a de grosses failles de sécurité mais j'y viendrai pas la suite ;)