PHP-セッション技術

2867 ワード

1概要
セッション・テクノロジーとは、1つのブラウザとサーバがセッション中(ブラウザが閉じていない)に、各リクエストの異なるスクリプト間でいくつかのデータを共有できるテクノロジーをセッション・テクノロジーと呼ぶ.
よく使われる会話技術は2種類あります.Cookie技術:ブラウザにデータを保存し、異なるPHPスクリプトの間でブラウザ上のデータ 2を共有することができる.Sessionテクノロジー:サーバ側にデータを保存し、異なるPHPスクリプト間でサーバ側のSessionデータを共有できます.
2 Cookie技術
Cookieは、クライアントブラウザのメモリまたはハードディスクに格納されるサーバからクライアントに送信されるフラグメント情報である.ブラウザが要求を開始すると,HTTP要求のヘッダを介してこれらのフラグメント情報をサーバに返信する.
2.1サービス側がクライアントにCookieを追加する
PHPでCookieを設定する関数は次のとおりです.
function setcookie ($name, $value = "", $expire = 0, $path = "", $domain = "", $secure = false, $httponly = false)
setcookie('isLogin', '1', time() + 3600);

配列の設定
setcookie('user[username]', 'Lucy');
setcookie('user[password]', '123456');

2.2サービス側読み取りCookie
$_COOKIE['username']

2.3サービス側クライアントCookieの削除
    $expirtTime = time() - 3600;
    setcookie('username', '', $expirtTime);

3 Sessionテクノロジー
Cookie技術はユーザクライアントのコンピュータに資料を保存するため、大きな論争を引き起こし、ユーザはCookieの使用を阻止する権利があり、サーバがCookieを通じてユーザを追跡できない.
Sessionテクノロジーは、ユーザーの関連データをサーバに配置し、サーバは32ビット16進数の文字列であるSession IDをユーザーに作成します.
Sessionを使用して1人のユーザを追跡し、各ページの間にSession IDを渡し、Session IDを介してサーバで対応するデータを取得する.一般的なSession IDの伝送方法は2種類ある:  1.Cookieに基づいてSession ID 2を伝達する.URLパラメータで渡す
3.1セッションの宣言と使用
Sessionテクノロジーを使用するには、session_start()関数を呼び出し、関連する環境変数を事前にロードする必要があります.この関数には2つの主要な役割がある:セッションを開始します.既存のセッションを返す
bool session_start ([ array $options = [] ] ) //PHP 7.0,The options parameter was added.

3.1セッションの書き込みと読み取りsession_start()関数を呼び出すと、$_SESSIONグローバル配列を操作できます.
$_SESSION['username'] = 'admin';

$username = $_SESSION['username'];

3.2セッションログアウト
Sessionログアウトは4つのステップに分けられます.セッションを開きます.すべてのセッション変数  3を削除します.クライアントに格納されているセッションID 4を削除する.サービス側に保存されているセッションファイルの削除unset()関数を使用して単一の変数を解放するか、空の配列を割り当ててすべての変数を削除できます.
unset($_SESSION['username']);

$_SESSION = array();

セッションがCookieに基づいている場合は、CookieにセッションIDが保存されていることもクリアする必要があります.
   if (isset($_COOKIE[session_name()])) {
        //      php.init     
        setcookie(session_name(),'', time() - 3600,'/');
    }

セッションファイルの削除
session_destroy();

最終セッションのログアウト方法:
function clearSession() {
    session_start();
    $_SESSION = array();
    if (isset($_COOKIE[session_name()])) {
        //      php.init     
        setcookie(session_name(),'', time() - 3600,'/');
    }
    session_destroy();
}

参考記事
先端に必要なHTTPスキルのクッキー技術詳細:https://www.jianshu.com/p/2ceeaef92f20