問題は、セッションが期限切れになったときに、ログイン ページに戻るためにページを 2 回リロードする必要があることです。ここに私の.htaccessファイルがあります
php_flag display_errors on
php_value error_reporting 9999
RewriteEngine On
Options -MultiViews
AddDefaultCharset UTF-8
php_value session.gc_maxlifetime 5
php_value session.gc_divisor 1
php_value session.gc_probability 1
php_value session.cookie_lifetime 5
php_value session.save_path /path/to/session/folder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
私はいくつかのカスタム MVC フレームワークを使用しており、コントローラー __construct 関数で handleLogin() 関数を呼び出しています
function __construct() {
parent::__construct();
Auth::handleLogin();
}
そして最後にここに handleLogin() 関数があります
public static function handleLogin() {
@session_start();
if (isset($_SESSION['loggedIn'])) {
$logged = $_SESSION['loggedIn'];
} else {
session_destroy();
header('location: ' . URL . 'login');
exit;
}
}
セッションの有効期限が切れたときに最初の更新後にユーザーをログイン ページにリダイレクトするには、何を変更する必要がありますか?
前もって感謝します!
PS Debianで実行しています
更新:ここにログアウト機能があり、ユーザーがクリックするとすぐにログインページにリダイレクトされます。
function logout()
{
session_destroy;
header('location: ' . URL . 'login');
exit;
}
更新#2問題の説明を改善するためにスクリーンショットをいくつか取得しました
1) セッションがアクティブで、すべてが正常に機能している場合
2) セッションの有効期限が切れました - ユーザーがリンクをクリックするか、(最初の更新後に) ページを更新します。
3) 2 回目の更新後
もう1つ..デフォルトのphp.ini設定(セッションの有効期間:1440秒)を使用すると、リダイレクトに問題なくすべてが正常に機能します