ブラウザを閉じた後、または PHP でしばらくアイドル状態になった後に戻った後でも、ユーザー セッションをアクティブに保つにはどうすればよいですか?
<p>私のコードでは、「私を記憶する」を選択できます。これを選択すると、電子メールとパスワードの値が Cookie に保存され、Cookie は 1 か月間持続します。これで、ユーザーが再度ページにアクセスしたときに、セッションを維持する代わりに、アクティブな場合、保存された Cookie から値を取得し、ログイン フォームに表示します。
私は現在cloudflareとホスティングを使用しており、次のコード行を設定しようとしました: </p>
<pre class="brush:php;toolbar:false;">php_value session.cookie_lifetime 2629800;
php_value session.gc_maxlifetime 2629800;</pre>
<p>どちらも php.ini と .htacces にありますが、結果は同じです (ユーザーがブラウザを閉じるとセッションは閉じられます)。 </p>
<p>これはloginUser関数です。ユーザーが「Remind Me」をチェックしたときにログインを処理し、Cookieを作成します。私が望んでいるのは、ユーザーがブラウザを閉じたり、ブラウザを閉じた後に戻ってきたりしても、「Remind Me」をチェックすることです。しばらくの間、セッションは非アクティブな間アクティブなままになりますが、セッションの期間は 1 か月 (2629800 秒) です。 </p>
<pre class="brush:php;toolbar:false;">関数 loginUser($email, $password, $rememberme)
{
$mysqli = 接続();
$email = トリム($email);
$パスワード = トリム($パスワード);
if ($email == "" || $password == "") {
return '両方のフィールドが必須です';
}
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
$password = filter_var($password, FILTER_SANITIZE_SPECIAL_CHARS);
$sql = "SELECT * FROM users WHERE email = ? LIMIT 1";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();
$data = $result->fetch_assoc();
if ($data == NULL) {
return '電子メールが存在しません。サインアップして入力してください';
}
if (password_verify($password, $data["password"]) == FALSE) {
return 'パスワードが間違っています。確認してもう一度お試しください';
} それ以外 {
$user_id = $data['user_id'];
$_SESSION['auth_user_id'] = $user_id;
$_SESSION["ユーザー"] = $email;
$_SESSION["パス"] = $パスワード;
$_SESSION["ユーザー名"] = $data['ユーザー名'];
$_SESSION["検証"] = $data['検証'];
$_SESSION["プロファイル"] = $data['プロファイル画像'];
$_SESSION["id"] = $data['user_id'];
$_SESSION["vip"] = $data['vip'];
setcookie('user_id', $data['user_id'], time() 60 * 60 * 24 * 30, '/');
if ($rememberme) {
$cookie_name = '米国を記憶';
$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("場所:index.php");
出口();
}
}</pre>
<p>PS: 重複していることは承知していますが、上記の質問はどれも私の問題を解決しませんでした。</p>
<p>htaccess と php.ini に次の行を設定しようとしましたが、成功しませんでした。</p>
<pre class="brush:php;toolbar:false;">php_value session.cookie_lifetime 2629800;
php_value session.gc_maxlifetime 2629800;
//functions.php内
$expire = 60*60*24*30; // 1 年間の期間を選択します
ini_set('session.gc_maxlifetime', $expire);
session_start();</pre>
<p>ブラウザを閉じて再度開くときにコード行を確立することにより、セッションはアクティブのままになりますが、最大 2 時間のみであることにも言及する価値があります。 </p>