Ajout de la fonction "Se souvenir de moi"
This commit is contained in:
@@ -17,7 +17,7 @@ function validationIdentifiants($pdo,$identifiant,$mdp) {
|
||||
$req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant';
|
||||
|
||||
$sql = $pdo->prepare($req);
|
||||
$sql->bindValue(':identifiant', $identifiant);
|
||||
$sql->bindValue(':identifiant', htmlspecialchars($identifiant));
|
||||
$sql->execute();
|
||||
|
||||
$result = $sql ->fetchAll(PDO::FETCH_ASSOC);
|
||||
@@ -51,4 +51,66 @@ function validationIdentifiants($pdo,$identifiant,$mdp) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function initValeursSession($result) {
|
||||
$_SESSION['id_utilisateur'] = $result[0]['id'];
|
||||
$_SESSION['pseudo_utilisateur'] = $result[0]['utilisateur'];
|
||||
$_SESSION['nom_utilisateur'] = $result[0]['nom_complet'];
|
||||
$_SESSION['privilege_utilisateur'] = $result[0]['privilege'];
|
||||
$_SESSION['pseudo_connexion_utilisateur'] = $result[0]['utilisateur'];
|
||||
}
|
||||
|
||||
function creerCookie($result) {
|
||||
$cookie_params = array (
|
||||
'expires' => time() + 60*60*24*30,
|
||||
'path' => '/',
|
||||
'domain' => $_SERVER['HTTP_HOST'],
|
||||
'secure' => false, // Mettre à true en prod (PENSER À LE FAIRE DANS deconnexion.php ET "Prolongement de la durée du cookie" AUSSI !)
|
||||
'httponly' => true,
|
||||
'samesite' => 'Strict'
|
||||
);
|
||||
setcookie('souvenir-session', htmlspecialchars($_SESSION['pseudo_utilisateur']).'|--@--|'.hash('sha3-512', $result['0']['id'].$result['0']['utilisateur'].$result['0']['mot_de_passe']), $cookie_params);
|
||||
}
|
||||
|
||||
function validationCookie($pdo) {
|
||||
if (isset($_COOKIE['souvenir-session'])) {
|
||||
if (!isset($_SESSION['id_utilisateur'])) {
|
||||
$donnees_cookie=explode('|--@--|', $_COOKIE['souvenir-session']);
|
||||
try {
|
||||
$req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant';
|
||||
|
||||
$sql = $pdo->prepare($req);
|
||||
$sql->bindValue(':identifiant', htmlspecialchars($donnees_cookie['0']));
|
||||
$sql->execute();
|
||||
|
||||
$result = $sql ->fetchAll(PDO::FETCH_ASSOC);
|
||||
$comptage = count($result);
|
||||
|
||||
}
|
||||
catch(PDOException $e) {
|
||||
die ("Erreur lors du traitement de la requête : " . $e->getMessage());
|
||||
}
|
||||
|
||||
if ($comptage == 1) {
|
||||
if (hash('sha3-512', $result['0']['id'].$result['0']['utilisateur'].$result['0']['mot_de_passe'])===$donnees_cookie['1']) {
|
||||
// Cookie valide. On initialise les variables de sessions pour le bon fonctionnement du site.
|
||||
initValeursSession($result);
|
||||
}
|
||||
else {
|
||||
// Cookie invalide (probablement modifié par l'utilisateur).
|
||||
return false;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
// Prolongement de la durée du cookie
|
||||
setcookie('souvenir-session', $_COOKIE['souvenir-session'], ['expires' => time() + 60*60*24*30, 'path' => '/', 'domain' => $_SERVER['HTTP_HOST'], 'secure' => false, 'httponly' => true, 'samesite' => 'strict']);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user