Bonjour!
Je réalise un espace membre, admin, et il y a une page de login, donc, je connecte l'utilisateur, je lui met un cookie et voilà. Cela marche, quand je me connecte j'accède bien à la page, soit admin, soit membre. Mais le problème est que si je crée une nouvelle page google chrome si je vais dans ma page login, le COOKIE n'existe pas, si je F5 cela ne marche toujours pas. Par contre, si je vais directement sur la page membres, cela marche (si je met admin, ca me redirige vers membre AVEC le COOKIE existant) mais il n'y a pas le COOKIE, par contre si je F5, le COOKIE existe. Je n'arrive pas à voir d'erreur dans le code, ça fait quelques jours déjà que je penche sur le problème et je comprends vraiment pas. Voici les codes, merci d'avance de votre aide :
login.php:
<?php
include('assets/db.php');
session_start();
var_dump($_COOKIE['token_id']);
if (isset($_COOKIE['token_id'])) {
$request = $bdd->prepare("SELECT * FROM users WHERE token_id = ?");
$request->execute(array($_COOKIE['token_id']));
$userDB = $request->rowCount();
$cookieInfo = $request->fetch();
$_SESSION['username'] = $cookieInfo['username'];
$_SESSION['password'] = $cookieInfo['password'];
$_SESSION['email'] = $cookieInfo['email'];
$_SESSION['order_id'] = $cookieInfo['order_id'];
$_SESSION['role'] = $cookieInfo['role'];
if($_SESSION['role'] === "0")
{
header('Location: /site/membres/');
}else if($_SESSION['role'] === "1"){
header('Location: /site/admin/');
}
}
$email = true;
$valideEmail = true;
$password = true;
$verifUser = true;
// Si on a demandé à se connecter :
if(isset($_POST['connection'])) {
// Vérification de l'email:
if(!empty($_POST['email'])){
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
// Email valide
}else{
$erreur = "Rentrez une e-mail correcte.";
$valideEmail = false;
}
}else{
$erreur = "Veuillez spécifier l'e-mail.";
$email = false;
}
// Vérification du password:
if(!empty($_POST['password'])){
// Password entré
}else{
$erreur = "Veuillez entrez votre mot de passe.";
$password = false;
}
if($email === true && $valideEmail === true && $password === true)
{
$req = $bdd->prepare("SELECT * FROM users WHERE email = ? AND password = ?");
$req->execute(array($_POST['email'], $_POST['password']));
$user = $req->rowCount();
// Si l'user existe :
if($user === 1)
{
// Récupérer les infos de l'user
$userinfo = $req->fetch();
$_SESSION['role'] = $userinfo['role'];
// Crée un token_id unique et l'insérer dans la bdd
$token_id = sha1($userinfo['id']);
$req2 = $bdd->prepare("UPDATE users SET token_id = ? WHERE email = ?");
$req2->execute(array($token_id, $userinfo['email']));
// Cookies
setcookie('token_id',$token_id, time()+365*24*3600, null, null, false, true);
if($_SESSION['role'] === "0")
{
header('Location: /site/membres/');
}else if($_SESSION['role'] === "1"){
header('Location: /site/admin/');
}
}else{
$erreur = "E-mail ou mot de passe incorrect.";
$verifUser = false;
}
}
}
?>
membre.php
<?php
include($_SERVER["DOCUMENT_ROOT"].'/site/assets/db.php');
session_start();
var_dump($_COOKIE['token_id']);
if($_SESSION['role'] !== "0")
{
header('Location: /site/login');
}else{
$request = $bdd->prepare("SELECT * FROM users WHERE token_id = ?");
$request->execute(array($_COOKIE['token_id']));
$userDB = $request->rowCount();
$cookieInfo = $request->fetch();
$_SESSION['username'] = $cookieInfo['username'];
$_SESSION['password'] = $cookieInfo['password'];
$_SESSION['email'] = $cookieInfo['email'];
$_SESSION['order_id'] = $cookieInfo['order_id'];
$_SESSION['role'] = $cookieInfo['role'];
}
?>
admin.php
<?php
include($_SERVER["DOCUMENT_ROOT"].'/site/assets/db.php');
session_start();
if($_SESSION['role'] !== "1")
{
header('Location: /site/login');
}else{
$request = $bdd->prepare("SELECT * FROM users WHERE token_id = ?");
$request->execute(array($_COOKIE['token_id']));
$userDB = $request->rowCount();
$cookieInfo = $request->fetch();
$_SESSION['username'] = $cookieInfo['username'];
$_SESSION['password'] = $cookieInfo['password'];
$_SESSION['email'] = $cookieInfo['email'];
$_SESSION['order_id'] = $cookieInfo['order_id'];
$_SESSION['role'] = $cookieInfo['role'];
}
?>
J'éspère que vous pourrez m'éclairez, merci de votre aide.
Cordialement.
Bonjour,
Merci de vos réponses, j'ai moi aussi énormement de mal à comprendre pourquoi ça ne marche pas..