質問
を呼び出すページにアクセスした場合 session_start()
. 。ページを更新すると新しいセッション ID が発行されるまで、どのくらい待つ必要がありますか?
解決
php.iniを確認してください。session.gc_maxlifetimeに設定されている値は、IDの有効期間(秒)です。
デフォルトは1440秒(24分)です
http://www.php.net/manual/en/session。 configuration.php
編集:一部のコメントが指摘しているように、上記は完全に正確ではありません。セッションのライフタイムを実装する理由と方法のすばらしい説明は、ここにあります:
他のヒント
php.ini のデフォルト session.gc_maxlifetime
ディレクティブ (「gc」はガベージ コレクション用) は 1440 秒、つまり 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 ディレクトリから訪問者のセッションをハイジャックすることを防ぐのにも役立ちます。
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フォルダーには、セッション情報を保持するためのテキストファイルが格納されます。各ファイルの名前は&quot; sess_a_big_hash_here&quot;に似ています。
PHPの設定によって異なります...
phpinfo()
を使用して、セッションの章をご覧ください。セッションの有効期間に影響する session.gc_maxlifetime
や session.cache_expire
や session.cookie_lifetime
などの値があります
編集: マーティンが前に書いたようなものです
ただし、ほとんどのxampp / ampp /...- setupsおよび一部の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
ini_set( 'session.gc_maxlifetime'、28800);のようなものを使用できます。 // 8 * 60 * 60
も。