1

PHP セッションがランダムに期限切れになり、約 5 分 (300 秒) を超えることはめったにありません。

ここで PHP と MySQL のログイン スクリプトを試しています: http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL (以下に抽出された sec_session_start 関数)。

function sec_session_start() {
    $session_name = 'sec_session_id'; // Set a custom session name
    $secure = false; // Set to true if using https.
    $httponly = true; // This stops javascript being able to access the session id. 

    ini_set('session.use_only_cookies', 1); // Forces sessions to only use cookies. 
    $cookieParams = session_get_cookie_params(); // Gets current cookies params.
    session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); 
    session_name($session_name); // Sets the session name to the one set above.
    session_start(); // Start the php session
    session_regenerate_id(true); // regenerated the session, delete the old one.     
}

私は問題を解決しようと試み、多くの理由で PHP セッションが早期に期限切れになることを理解するために、この主題を詳しく読みました。問題を解決する方法について何かアイデアがあれば、教えてください。問題が私を怒らせるからです。

注意:
1. php.ini で、session.gc_maxlifetime = 3600 を設定し
ました。 2. 私のホストは IPage です。
2. session_set_cookie_params を次のように編集しようとしましたが、問題は解決しません。

    session_set_cookie_params( time()+1800, "/", $cookieParams["domain"], $secure, $httponly); 
4

3 に答える 3

2

あなたのコードは、セッションごとに 1 つの不変の名前を持っていますか? 誰かが新しいセッションを開始するたびに、前のセッションが破壊されると考えたことはありますか? セッション識別子が一意であるのには理由があります。

それとは別に、ご主人に聞いてください。X 分ごとに /tmp をクリアするなど、ばかげたことをしている可能性があります。

于 2012-11-05T20:39:52.297 に答える
0

ここで説明されているのと同じ問題である可能性があります: http ://www.php.net/manual/en/function.session-regenerate-id.php#84242

これはブラウザの問題であり、phpではありません。(ChromeよりもFirefoxでの再作成がはるかに簡単です)「session_regenerate_id(false);」の設定 役立ちますが、それは安全なログインの目的を無効にします。

于 2012-11-05T21:14:01.453 に答える