PHPセッション管理

WBOY
WBOYオリジナル
2016-08-08 09:21:04997ブラウズ
現在のキャッシュの有効期限を読み取り/設定します
int session_cache_expire ([ string $new_cache_expire ] )
リクエストが開始されると、キャッシュの有効期限は 180 分にリセットされ、session.cache_expire 構成アイテムに保存されます。 したがって、リクエストごとに、session_start() 関数呼び出しの前に session_cache_expire() を呼び出して、キャッシュの有効期限を設定する必要があります。 new_cache_expire が指定されている場合は、new_cache_expire の値を使用して現在のキャッシュの有効期限を分単位で設定します。デフォルト値は 180 (分) です。
キャッシュリミッターの読み取り/設定
を使用して を使用して クライアントまたはプロキシ サーバーは、この応答ヘッダー情報を検出して、ページ コンテンツのキャッシュ ルールを決定します。 キャッシュ リミッターを次のように設定します。 nocache は、クライアントまたはプロキシ サーバーがコンテンツをキャッシュすることを禁止します。
public は、クライアントまたはプロキシ サーバーがコンテンツをキャッシュすることを許可されることを意味します。 private は、クライアントがキャッシュすることは許可されるが、プロキシ サーバーがキャッシュすることを許可されないことを意味しますコンテンツをキャッシュします。プライベート モードでは、Mozilla を含む一部のブラウザーは、次を使用して Expire 応答ヘッダーを正しく処理できない場合があります。 private_no_expire モードはこの問題を解決できます。このモードでは、Expire 応答ヘッダーはクライアントに送信されません。 現在のセッションIDを取得/設定します
string session_id ([ string $id ] )
idパラメータの値が指定されている場合は、指定された値をセッションIDとして使用します。 session_id() 関数は、session_start() 関数を呼び出す前に呼び出す必要があります。 セッション マネージャーが異なれば、セッション ID で使用できる文字に対する制限も異なります。 たとえば、ファイル セッション マネージャーでは、セッション ID に次の文字のみを使用できます: a-z A-Z 0-9 、(カンマ)、および - (マイナス記号)。
セッション名の読み取り/設定
string session_name ([ string $name ] )
session_name() 関数は現在のセッション名を返します。 name パラメータが指定されている場合、session_name() 関数はセッション名を更新し、元のセッション名を返します。リクエストが開始されると、セッション名がリセットされ、session.name 構成アイテムに保存されます。 したがって、セッション名を設定するには、リクエストごとに次を呼び出す必要があります。 session_name() 関数は、session_start() または
session_register() 関数の前に呼び出されます。 セッション名は少なくとも 1 文字である必要があり、すべて数字にすることはできません。そうしないと、毎回新しいセッション ID が生成されます。 現在のセッションの保存パスを読み取り/設定します
string session_save_path ([ string $path ] )
セッションデータを保存するパスを指定します。 session_save_path() 関数は、session_start() 関数を呼び出す前に呼び出す必要があります。 一部のオペレーティング システムでは、多数の小さいサイズのファイルを効率的に処理できるファイル システム上のパスを使用してセッション データを保存することをお勧めします。 たとえば、Linux プラットフォームでは、reiserfs ファイル システムは、セッション データの保存に関して ext2fs ファイル システムよりも優れたパフォーマンスを提供します。
新しいセッションを開始するか、既存のセッションを再利用します
bool session_start ( void )
session_start() は、新しいセッションを作成するか、既存のセッションを再利用します。 セッション ID が GET または POST、または Cookie を使用して送信された場合、既存のセッションが再利用されます。 セッション内のすべてのデータを破棄します

bool session_destroy ( void )

session_destroy() 現在のセッション内のすべてのデータを破棄します。
ただし、現在のセッションに関連付けられたグローバル変数はリセットされず、セッション Cookie もリセットされません。

セッション変数を再度使用する必要がある場合は、session_start() 関数を再度呼び出す必要があります。セッションを完全に破棄するには、たとえばユーザーがログアウトするとき、セッション ID もリセットする必要があります。 セッション ID が Cookie を介して送信される場合、setcookie() 関数を呼び出してクライアントのセッション Cookie を削除する必要もあります。

1. セッションは現在 $_COOKIE[session_name()];session_name() が存在するかどうかを判断し、session_id を保存する COOKIE キーの値を返します。この値は php.ini から見つけることができます。存在しない場合は session_id が生成され、生成された session_id が COOKIE の値としてクライアントに渡されます。これは、次の COOKIE を実行するのと同等です。 操作では、このステップでは setcookie() 操作が実行され、ヘッダーで COOKIE が送信されることに注意してください。これより前に出力することはできません。 PHPには別の関数があります session_regenerate_id()、この関数を使用する場合、これより前には出力はありません。 ️ setcookie
Session.cookie_domain,//デフォルトは空です ) 存在する場合、 session_id =$_COOKIE[session_name() ]; 次に、session.save_path で指定されたフォルダーに移動して、

'SESS_' という名前のファイルを見つけます。 .session_id()。ファイルの内容を読み取り、デシリアライズし、それを $_SESSION に追加します。たとえば、新しい値 $_SESSION['test'] ='blah'; を追加します。 $_SESSION はメモリ内にのみ保持され、スクリプトの実行が終了すると、$_SESSION の値が session_id で指定されたフォルダーに書き込まれ、関連するリソースが閉じられます。通常はインスタント COOKIE であり、ブラウザを閉じると期限切れになります。ブラウザを閉じる代わりにログアウトするなど、手動で有効期限を強制する必要がある場合は、コード内の SESSION を破棄する必要があります。
1].
setcookie
(session_name(),session_id(),time() - 8000000,..);//ログアウトする前に実行する 2]。これにより、すべての $_SESSION データが削除されます。更新後、COOKIE が渡されますが、データはありません。

3].

session_destroy

();//この関数はより完全で、$_SESSION を削除し、セッション ファイルと session_id を削除します。 ブラウザを閉じずに再度ブラウザを更新すると、2と3にCOOKIEが送信されますが、データが見つかりません。

<?php
    // 初始化会话
    session_name(&#39;Session_test&#39;);
    session_id(&#39;safdsadfasdfsadfasdf&#39;);
    session_start();
    
    $_SERVER[&#39;user&#39;] = &#39;admin&#39;;
    echo $_SERVER[&#39;user&#39;]."<br>";
    
    echo $_COOKIE[session_name()];    
    
    //// 重置会话中的所有变量 -- 使用unset可以重置某个会话变量
//    $_SESSION = array();    
//    // 同时删除会话 cookie
//    if (ini_get("session.use_cookies")) 
//    {
//        $params = session_get_cookie_params();
//        setcookie(session_name(), '', time() - 42000,
//            $params["path"], $params["domain"],
//            $params["secure"], $params["httponly"]);    
//    }
//    // 最后,销毁会话
//    session_destroy(); 
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
</body>
</html>


著作権声明: この記事はブロガー Lang Ya Studio によるオリジナルの記事であり、ブロガーの許可なく複製することはできません。
以上、PHP セッション管理についてその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

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