Comment garder une session utilisateur active même après la fermeture du navigateur ou son retour après avoir été inactif en PHP pendant un certain temps ?
<p>Dans mon code, je peux sélectionner "Se souvenir de moi", une fois sélectionné, il enregistre la valeur de l'e-mail et du mot de passe dans un cookie et le cookie dure 1 mois, maintenant lorsque l'utilisateur entre à nouveau sur la page, au lieu de conserver la session actif, il récupère la valeur du cookie enregistré et l'affiche sur le formulaire de connexion.
J'utilise actuellement cloudflare et l'hébergement et j'ai essayé de configurer ces lignes de code : </p>
<pre class="brush:php;toolbar:false;">php_value session.cookie_lifetime 2629800;
php_value session.gc_maxlifetime 2629800;</pre>
<p>Les deux sont dans php.ini et .htacces, mais le résultat est le même (la session sera fermée lorsque l'utilisateur fermera le navigateur). </p>
<p>Il s'agit de la fonction loginUser, elle gère la connexion et crée le cookie lorsque l'utilisateur coche "Se souvenir de moi", ce que je veux, c'est en cochant "Me rappeler", même si l'utilisateur ferme le navigateur ou revient après pendant un certain temps, la session reste active pendant le temps d'inactivité, mais la durée de la session est de 1 mois (2629800 secondes).</p>
<pre class="brush:php;toolbar:false;">fonction loginUser($email, $password, $rememberme)
{
$mysqli = connecter();
$email = trim($email);
$mot de passe = trim($mot de passe);
if ($email == "" || $password == "") {
return 'Les deux champs sont obligatoires';
}
$email = filtre_var($email, FILTER_SANITIZE_EMAIL);
$mot de passe = filtre_var($mot de passe, FILTER_SANITIZE_SPECIAL_CHARS);
$sql = "SELECT * FROM utilisateurs WHERE email = ? LIMITE 1" ;
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $email);
$stmt->exécuter();
$result = $stmt->get_result();
$data = $result->fetch_assoc();
si ($données == NULL) {
return 'L'email n'existe pas, inscrivez-vous pour participer';
}
if (password_verify($password, $data["password"]) == FALSE) {
return 'Le mot de passe est incorrect, veuillez vérifier et réessayer';
} autre {
$user_id = $data['user_id'];
$_SESSION['auth_user_id'] = $user_id;
$_SESSION["utilisateur"] = $email;
$_SESSION["pass"] = $mot de passe;
$_SESSION["nom d'utilisateur"] = $data['nom d'utilisateur'];
$_SESSION["vérifier"] = $data['vérifier'];
$_SESSION["profil"] = $data['profileImage'];
$_SESSION["id"] = $data['user_id'];
$_SESSION["vip"] = $data['vip'];
setcookie('user_id', $data['user_id'], time() + 60 * 60 * 24 * 30, '/');
si ($souviens-toi de moi) {
$cookie_name = 'Remember_US';
$cookie_value = json_encode(array('lemail' => $email, 'lpassword' => $password));
$cookie_expire = time() + (60 * 60 * 24 * 30) ;
setcookie($cookie_name, encrypt($cookie_value), $cookie_expire, '/', null, true, true);
}
header("emplacement : index.php");
sortie();
}
}</pré>
<p>PS :
<p>
<pre class="brush:php;toolbar:false;">php_value session.cookie_lifetime 2629800;
php_value session.gc_maxlifetime 2629800 ;
//Dans fonctions.php
$expire = 60*60*24*30 ; // Nous choisissons une durée d'un an
ini_set('session.gc_maxlifetime', $expire);
session_start();</pre>
<p>但最多只能持续 2 小时。</p>