68

を呼び出すページsession_start()にアクセスした場合、ページを更新したときに新しいセッション ID を取得するまでにどのくらい待つ必要がありますか?

4

6 に答える 6

61

session.gc_maxlifetime に設定されている値は、秒単位の ID の有効期間です。

デフォルトは 1440 秒 (24 分) だと思います

http://www.php.net/manual/en/session.configuration.php

編集:一部のコメントが指摘しているように、上記は完全に正確ではありません。セッション ライフタイムを実装する理由と方法についてのすばらしい説明は、次の場所にあります。

PHP セッションを 30 分後に期限切れにするにはどうすればよいですか?

于 2008-10-01T08:39:06.930 に答える
27

ディレクティブ (「gc」はガベージ コレクション用)の php.ini のデフォルトは、session.gc_maxlifetime1440 秒または 24 分です。マニュアルのセッション ランタイム構成ページを参照してください。

http://www.php.net/manual/en/session.configuration.php

php.ini または .httpd.conf ファイルにアクセスできる場合は、これらのファイルで、または Web サイトのローカルの .htaccess ファイルで、この定数を変更できます。.htaccess メソッドを使用してタイムアウトを 1 時間に設定するには、サイトのルート ディレクトリにある .htaccess ファイルに次の行を追加します。

php_value session.gc_maxlifetime "3600"

共有ホストを使用している場合、またはデフォルトを変更していない複数のサイトをホストしている場合は注意してください。デフォルトのセッションの場所は /tmp ディレクトリで、ガベージ コレクション ルーチンはこれらの他のサイトに対して 24 分ごとに実行されます (保持する期間に関係なく、その過程でセッションを消去します)。より良い説明については、マニュアルページまたはこのサイトのを参照してください。

これに対する答えは、session.save_path を使用してセッションを別のディレクトリに移動することです。これは、悪意のある人物がデフォルトの /tmp ディレクトリから訪問者のセッションをハイジャックするのを防ぐのにも役立ちます。

于 2008-10-01T09:11:56.617 に答える
5

それはあなたのphp設定に依存します...セッションの章を
使用して見てください。セッションの有効期間に影響するandおよびのphpinfo()ような値がありますsession.gc_maxlifetimesession.cache_expiresession.cookie_lifetime

編集:マーティンが前に書いたようなものです

于 2008-10-01T08:42:05.020 に答える
4

PHP.netサイトのユーザーによると、セッションを維持する試みが失敗したため、回避策を講じる必要がありました。

<?php

$Lifetime = 3600;
$separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";

$DirectoryPath = dirname(__FILE__) . "{$separator}SessionData";
//in Wamp for Windows the result for $DirectoryPath
//would be C:\wamp\www\your_site\SessionData

is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);

if (ini_get("session.use_trans_sid") == true) {
    ini_set("url_rewriter.tags", "");
    ini_set("session.use_trans_sid", false);

}

ini_set("session.gc_maxlifetime", $Lifetime);
ini_set("session.gc_divisor", "1");
ini_set("session.gc_probability", "1");
ini_set("session.cookie_lifetime", "0");
ini_set("session.save_path", $DirectoryPath);
session_start();

?>

SessionData フォルダーには、セッション情報を保持するためのテキスト ファイルが格納されます。各ファイルには、「sess_a_big_hash_here」のような名前が付けられます。

于 2012-04-29T22:47:19.053 に答える
1

ただし、ほとんどのxampp / ampp /...-セットアップと一部のLinuxディストリビューションでは0であることに注意してください。これは、スクリプト内で実行するまで(またはシェルを介してダーティになるまで)ファイルが削除されないことを意味します。

PHP.INI:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0
于 2012-04-06T12:50:55.193 に答える