-Mon besoin : À l'aide des infos stockés dans la session, afficher un formulaire de connexion quand l'utilisateur n'est pas identifé, et ne plus l'afficher quand il l'est.
-Mon problème : Dans compte.php, la condition de la ligne 13 ne se remplit jamais alors que le var_dump de la ligne 21 montre que 'username' est bel et bien défini dans $_SESSION.
Ça fait des heures que je cherche en vain une solution, ça serait super que vous puissiez me montrer ce qui ne va pas.
Mon code :
compte.php :
Code : Tout sélectionner
<?php session_start();?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Connexion</title>
</head>
<body>
<?php
if (isset($_SESSION['username']))
{
echo $_SESSION['username'];
}
else
{
include 'connexion_form.php';
}
var_dump($_SESSION);
?>
</body>
</html>
Code : Tout sélectionner
<html>
<form method="post">
<input type="text" name="username" id="username" placeholder="Nom d'utilisateur" required><br/>
<input type="password" name="password" id="password" placeholder="Mot de passe" required><br/>
<input type="submit" name="connection" id="connection" value="Connexion">
</form>
</html>
<?php
// Si le formulaire a été envoyé :
if (isset($_POST['connection']))
{
extract($_POST);
// Si les champs ne sont pas vides :
if(!empty($username) && !empty($password))
{
include 'database_connexion.php';
global $db;
// Vérifie que l'username entré existe dans la BDD
$q = $db->prepare("SELECT * FROM users WHERE username = :username");
$q->execute(['username' => $username]);
$result = $q->fetch();
if ($result == true)
{
// Vérifie que le mot de passe est bien celui de l'utilisateur indentifié
if(password_verify($password, $result['password']))
{
echo"<br/> Connexion au compte réussie";
$_SESSION['username'] = $result['username'];
}
else
{
echo"<br/> Identifiants incorrect";
}
}
else
{
echo"<br/> Identifiants incorrect";
}
}
}
?>
Code : Tout sélectionner
<?php
define('HOST', 'localhost');
define('DB_NAME', 'db');
define('USER', 'root');
define('PASS','');
try{
$db = new PDO("mysql:host=" . HOST . ";dbname=" . DB_NAME, USER, PASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "<br/> Connexion à la BDD réussie";
} catch(PDOException $e){
echo $e;
}
?>