Ajout de la fonction "Se souvenir de moi"
This commit is contained in:
@@ -4,8 +4,11 @@
|
|||||||
* Page centrale de gestion des fonctionnalités du serveur de courriel.
|
* Page centrale de gestion des fonctionnalités du serveur de courriel.
|
||||||
* C'est de cette page qu'est appelé l'ensemble des fonctionnalités du portail.
|
* C'est de cette page qu'est appelé l'ensemble des fonctionnalités du portail.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
|
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/authentification.php");
|
||||||
|
validationCookie($pdo);
|
||||||
|
|
||||||
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
|
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/privileges.php");
|
||||||
testPrivileges();
|
testPrivileges();
|
||||||
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
|
require_once($_SERVER["DOCUMENT_ROOT"]."/inclusions/entete.php");
|
||||||
|
|||||||
@@ -6,6 +6,10 @@
|
|||||||
* Redirige les tentative d'identification pour traitement et test de légitimité.
|
* Redirige les tentative d'identification pour traitement et test de légitimité.
|
||||||
*/
|
*/
|
||||||
session_start();
|
session_start();
|
||||||
|
|
||||||
|
require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/sessions/authentification.php");
|
||||||
|
validationCookie($pdo);
|
||||||
|
|
||||||
if (isset($_SESSION['id_utilisateur']) && isset($_SESSION['pseudo_utilisateur']) && isset($_SESSION['nom_utilisateur']) && isset($_SESSION['privilege_utilisateur']) && !empty($_SESSION['id_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['nom_utilisateur']) && !empty($_SESSION['privilege_utilisateur'])) {
|
if (isset($_SESSION['id_utilisateur']) && isset($_SESSION['pseudo_utilisateur']) && isset($_SESSION['nom_utilisateur']) && isset($_SESSION['privilege_utilisateur']) && !empty($_SESSION['id_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['nom_utilisateur']) && !empty($_SESSION['privilege_utilisateur'])) {
|
||||||
header ("location: /pages/gestion/administration.php?page=accueil");
|
header ("location: /pages/gestion/administration.php?page=accueil");
|
||||||
die();
|
die();
|
||||||
@@ -45,6 +49,8 @@ require_once($_SERVER["DOCUMENT_ROOT"]."/services/fonctions/messages/messages.ph
|
|||||||
<input type="password" name="mdp" class="form-control" id="mdp" placeholder="Mot de passe" required/>
|
<input type="password" name="mdp" class="form-control" id="mdp" placeholder="Mot de passe" required/>
|
||||||
<label for="mdp">Votre mot de passe</label>
|
<label for="mdp">Votre mot de passe</label>
|
||||||
</div>
|
</div>
|
||||||
|
<input type="checkbox" name="souvenir-session" id="souvenir-session" checked/>
|
||||||
|
<label for="souvenir-session">Se souvenir de moi</label>
|
||||||
<button id="envoyer" type="submit" class="btn btn-primary">envoyer</button>
|
<button id="envoyer" type="submit" class="btn btn-primary">envoyer</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ function validationIdentifiants($pdo,$identifiant,$mdp) {
|
|||||||
$req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant';
|
$req = 'SELECT * FROM postfix_utilisateurs WHERE utilisateur=:identifiant';
|
||||||
|
|
||||||
$sql = $pdo->prepare($req);
|
$sql = $pdo->prepare($req);
|
||||||
$sql->bindValue(':identifiant', $identifiant);
|
$sql->bindValue(':identifiant', htmlspecialchars($identifiant));
|
||||||
$sql->execute();
|
$sql->execute();
|
||||||
|
|
||||||
$result = $sql ->fetchAll(PDO::FETCH_ASSOC);
|
$result = $sql ->fetchAll(PDO::FETCH_ASSOC);
|
||||||
@@ -51,4 +51,66 @@ function validationIdentifiants($pdo,$identifiant,$mdp) {
|
|||||||
return false;
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -11,9 +11,11 @@ if (!empty($_GET['succes'])) {
|
|||||||
$succes=$_GET['succes'];
|
$succes=$_GET['succes'];
|
||||||
}
|
}
|
||||||
// Destruction des variables de la session
|
// Destruction des variables de la session
|
||||||
session_unset ();
|
session_unset();
|
||||||
// Destruction de la session
|
// Destruction de la session
|
||||||
session_destroy ();
|
session_destroy();
|
||||||
|
//Destruction du cookie de maintient de session
|
||||||
|
setcookie('souvenir-session', '', time() - 3600, '/', $_SERVER['HTTP_HOST'], false, true);
|
||||||
// Nous sommes obligés de passer par la variable transitoire $succes car le session_unset détruit $_GET...
|
// Nous sommes obligés de passer par la variable transitoire $succes car le session_unset détruit $_GET...
|
||||||
if (!empty($succes)) {
|
if (!empty($succes)) {
|
||||||
header('location: /pages/visiteurs/formulaire_accueil.php?succes='.$succes);
|
header('location: /pages/visiteurs/formulaire_accueil.php?succes='.$succes);
|
||||||
|
|||||||
@@ -17,14 +17,15 @@ if (isset($_POST['identifiant']) && isset($_POST['mdp']) && !empty($_POST['ident
|
|||||||
$result = validationIdentifiants($pdo,$_POST['identifiant'],trim($_POST['mdp']));
|
$result = validationIdentifiants($pdo,$_POST['identifiant'],trim($_POST['mdp']));
|
||||||
|
|
||||||
if($result) {
|
if($result) {
|
||||||
$duree_session=2592000;
|
|
||||||
session_set_cookie_params($duree_session);
|
|
||||||
session_start();
|
session_start();
|
||||||
$_SESSION['id_utilisateur'] = $result[0]['id'];
|
initValeursSession($result);
|
||||||
$_SESSION['pseudo_utilisateur'] = $result[0]['utilisateur'];
|
|
||||||
$_SESSION['nom_utilisateur'] = $result[0]['nom_complet'];
|
/**
|
||||||
$_SESSION['privilege_utilisateur'] = $result[0]['privilege'];
|
* Création d'un cookie permettant le maintient de session si l'utilisateur a coché la case "Se souvenir de moi".
|
||||||
$_SESSION['pseudo_connexion_utilisateur'] = $result[0]['utilisateur'];
|
*/
|
||||||
|
if (isset($_POST['souvenir-session']) && $_POST['souvenir-session']==="on") {
|
||||||
|
creerCookie($result);
|
||||||
|
}
|
||||||
|
|
||||||
if (isset($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && $_SESSION['privilege_utilisateur']==="administrateur") {
|
if (isset($_SESSION['pseudo_utilisateur']) && !empty($_SESSION['pseudo_utilisateur']) && $_SESSION['privilege_utilisateur']==="administrateur") {
|
||||||
header ("location: /pages/gestion/administration.php?message=bienvenue&page=accueil");
|
header ("location: /pages/gestion/administration.php?message=bienvenue&page=accueil");
|
||||||
@@ -38,7 +39,6 @@ if (isset($_POST['identifiant']) && isset($_POST['mdp']) && !empty($_POST['ident
|
|||||||
echo "Ça ne devrait pas arriver.";
|
echo "Ça ne devrait pas arriver.";
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
header('Location: /pages/visiteurs/echec_auth.php');
|
header('Location: /pages/visiteurs/echec_auth.php');
|
||||||
|
|||||||
Reference in New Issue
Block a user