ホームページ >バックエンド開発 >PHPチュートリアル >セッションの有効期限に関する問題

セッションの有効期限に関する問題

WBOY
WBOYオリジナル
2016-06-13 12:01:25919ブラウズ

セッションの有効期限の問題について
セッションを使用して簡単なログイン プログラムを作成しました。ログインに成功した後、設定ファイルで session.gc_maxlifetime = 60 を設定し、数分後にサーバーを再起動しました。 , I 再度ページにアクセスすると、セッションはまだ期限切れになっておらず、セッション ファイルも削除されていません。次に、session.gc_divisor と session.gc_probability を 1000 に設定します。サーバーを再起動した後、そのページにアクセスすると、セッションの有効期限がまだ切れていないのに、セッション ファイルがまだ残っているのはなぜでしょうか?これらの設定は役に立たないのでしょうか?
合計 3 つのファイルがあり、コードは次のとおりです:
login.php:
session_start();
if(!empty ($_SESSION[ 'username']))
{
header("location:index.php");
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$userInfo =loadUserInfo();
if($_POST['ユーザー名']=='ジェームズ' && $_POST['パスワード']=='123') {
$ _SESSION['username '] = $_POST['username'];
header('location:index.php');
} else {
echo 'ユーザー名またはパスワードのエラー!';
}
}

?>

ユーザーログイン

< ;form action="" method="POST" >
user

pass







index.php:
session_start();
if( empty($_SESSION ['username']))
{
header("location:login.php");
}
?>

< ;head>ユーザーセンター

こんにちは、

< ;a href="logout.php" >logout



logout.php:
session_start();
if(isset($_SESSION['username'])) {
setcookie(session_name(),"",0);
$_SESSION = array();
session_destroy();
header('location:login.php');
}
?>
----- -解決策- ------------------
アクティブな Web サイトを離れるとセッションが期限切れになります
期限切れのセッション一時ファイルには session.gc_probability / session が含まれる場合があります。 gc_divisor の確率は、gc プロセスが来ると削除されます
ただし、セッション一時ファイルがオペレーティング システムの一時ディレクトリに保存されていない場合、gc プロセスはそれらに影響を与えることができません
session from tracking ハンドラーの gc メソッドが確認されました

セッションは自由に削除できませんが、sessionid は再利用されません。 sessionid は時間に基づいて生成されるため、過去の特定の時点に戻ることはできないため、sessionid が繰り返されることはありません
もちろん、既知の sessionid を指定することも可能です

限りブラウザが閉じられておらず、対応するセッション一時ファイルが削除されていない場合、どれだけ待ってもセッションは有効です
逆に、session.gc_maxlifetime を超えて操作を一時停止した場合、セッション一時ファイルが再び削除されたため、再度操作できます。再度ログインする必要があります。

システムがセッションに依存している場合、セッション処理をカスタマイズし、open メソッドまたは read メソッドで gc メソッドを明示的に呼び出す必要があります。
環境の不確実性を回避する 要因の影響
-----解決策----------------------
与えるいくつかのポイント!
-----解決策--------------------------------
結局のところ、私は PHP 初心者であり、まだ学習の途中です

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。