0

私のデフォルトの PHP セッションは 30 分です。

私はこの最初のコードを得ました:

<?php
session_set_cookie_params(28800);
session_name('TEST');
session_start();
session_regenerate_id(true);

$_SESSION['test'] = 'jam';
?>

そして、この2番目のもの:

<?php
session_set_cookie_params(28800);
session_name('TEST');
session_start();
session_regenerate_id(true);

echo $_SESSION['test'];
?>

実際、アクティビティがないと 30 分後にセッションが失われます。

時限の例:

00:00 : run first script
00:10 : run seconde script : i got "jam"
00:20 : run seconde script : i got "jam"
00:40 : run seconde script : i got "jam"
01:11 : run seconde script : session is lost

これを修正する手がかりを教えていただければ幸いです。

4

3 に答える 3

3

PHPマニュアルのページでこの回答を見て、それが役立つかどうかを確認してください!session_set_cookie_params()

于 2013-03-06T14:06:01.730 に答える
0

Cookie の有効期間は方程式の一部にすぎません。サーバー側のセッション ストレージはもう 1 つです。session.gc_maxlifetimeそれも十分に高く設定されていることを確認してください。

于 2013-03-06T14:07:07.843 に答える
0

セッション データの実際の有効期間とは関係なく、Cookie の有効期間のみを設定しています。セッションをファイルシステムに保存するデフォルトのセッション保存ハンドラーを使用している場合、セッション データの有効期間はsession.gc_maxlifetimeディレクティブによって制御されます。この値は、次のようにini_setでオーバーライドできます。

ini_set('session.gc_maxlifetime', 28800);

セッションを使用する他のスクリプトもあり、それらがセッションの同じ保存パスを共有している場合、最小の gc_maxlifetime がそのディレクトリ内のすべてのセッションに使用されることに注意してください。したがって、gc_maxlifetime の値を変更したい場合は、通常、セッションが保存されている独自のパスも指定する必要があることを意味します。session_save_path関数を使用してこれを行うことができます。

session_save_path('/path/to/your/sessions');
于 2013-03-06T14:09:51.967 に答える