J'ai créé un site avec un espace admin.
J'y ai ajouté des jolies sessions qui fonctionnent bien.
Pour le confort des admi, j'aimerais ajouter une possibilité de rester connecté pendant plusieurs jours d'affilée (bypass de l'authetification), du coup, un petit coup de cookie en plus et c'est là que je commence à nager dans la panade!
J'arrive bien à créer mon cookie.
Il est là, je le vois, je le lis.
Mais je n'arrive pas à passer outre le formulaire d'authentification. J'essaie de vous donner un bout de code allégé en matière grasse:
$cook = $_COOKIE["souvenir"];
// On regarde si le cookie existe
if($cook){
// Si le cookie existe on le lit
$cook = explode('|',$cook);
$sq = "select * from admin_users where admin_id = '$cook[0]' and admin_password = '$cook[1]' ";
$rsq = mysql_query($sq);
$nb = mysql_num_rows($rsq);
// Si les informations sont correctes on ouvre la session
header( "Location: admin.php");
}
// Si le ccokie n'existe pas on affiche le formulaire
else{
/*--------------------------------------------------------------------
Gestion des cookie
--------------------------------------------------------------------*/
// si on a coché 'se souvenir de moi'
if(!empty($_POST['cookie'])){
if ((!empty($_POST['mat'])) && (!empty($_POST['pass'])) ) {
$pass = $_POST["pass"];
$mat = $_POST["mat"];
$ck = Get_Auth($mat,$pass);
// On vérifie que le couple id / mdp est correct
if ($ck == "1") {$loginOK = true;}
// Si le login a été validé on met les données en sessions
if ($loginOK) {
$pass= md5($pass);
$sql = "select admin_id from admin_users where admin_user = '$mat' and admin_password = '$pass'";
$rsql = mysql_query($sql);
$var = mysql_fetch_array($rsql);
$mat = $var["admin_id"];
$var_cookie = $mat."|".$pass ;
$expire = 365*24*3600; // on définit la durée du cookie, 1 an
setcookie("souvenir",$var_cookie,time()+$expire); // on l'envoi
}
}
}
/*--------------------------------------------------------------------
Gestion de la session
--------------------------------------------------------------------*/
session_start();
$loginOK = false; // cf Astuce
if ((!empty($_POST['mat'])) && (!empty($_POST['pass'])) ) {
$pass = $_POST["pass"];
$mat = $_POST["mat"];
$ck = Get_Auth($mat,$pass);
// On vérifie que son mot de passe est correct
if ($ck == "1") {$loginOK = true;}
// Si le login a été validé on met les données en sessions
if ($loginOK) {
$_SESSION["mat"] = $mat;
$_SESSION["admin"] = TRUE;
header( "Location: admin.php");
}else {header( "Location: _cnx.php");}
}
else {header( "Location: _cnx.php");}
}// fin si cookie