ホームページ > バックエンド開発 > PHPチュートリアル > PHP ダイアログについて: セッションと Cookie

PHP ダイアログについて: セッションと Cookie

WBOY
リリース: 2016-06-13 12:22:46
オリジナル
996 人が閲覧しました

PHP セッションについて: セッションと Cookie

セッション処理はどのような問題を解決しますか

HTTP (ハイパーテキスト転送プロトコル) は、テキスト、グラフィックス、ビデオなどの世界中への送信を定義します。 Web (WWW) データ ルール。 HTTP はステートレス プロトコルであり、各リクエストの処理は前後のリクエストとは無関係です。

セッション処理は、このステートレス問題の解決策です。これは、各 Web サイト訪問者にセッション ID (SID) と呼ばれる一意の識別属性を割り当て、この SID を任意の量のデータに関連付けることによって行われます。

セッション処理フロー

  1. ブラウザはサーバーにリクエストを送信します
  2. サーバーは訪問者のセッション ID (SID) を確立します。通常、SID は保存されます。サーバー側のファイルにあります。
  3. クライアントに保存されます ($_COOKIE['PHPSESSID'] または URL パラメーター)
  4. ブラウザはサーバーにリクエストを再度送信します
  5. サーバーは Cookie (またはURL のパラメータ) を使用して、SID がまだ同じセッションであるかどうかを確認します
  6. Web サイトを離れると、セッションが終了します

質問

SID はどのように Cookie に書き込まれますか?

PHP セッションが開始されると、各訪問者に SID が割り当てられます。この SID はクライアントの Cookie にも書き込まれます。デフォルトの Cookie 変数名は PHPSESSID です。ここで「同時性」と言うのは正確ではありません。次のページのコードはページを更新した後にのみ Cookie を取得できるからです:

<code class=" hljs scss"><span class="hljs-function">session_start()</span>;<span class="hljs-function">echo(<span class="hljs-string">'SID:'</span>.<span class="hljs-function">session_id()</span>.<span class="hljs-string">'<hr/>'</span>)</span>;<span class="hljs-function">echo(<span class="hljs-string">'Cookie_sid:'</span>.$_COOKIE[<span class="hljs-string">'PHPSESSID'</span>].<span class="hljs-string">'<hr/>'</span>)</span>;</code>
ログイン後にコピー

Cookie が無効になっていますが、同時にセッションも無効になりますか?

何の準備もせずにクライアントで Cookie を無効にすると、実際にセッションが無効になります。この本 (PHP および MySQL プログラミング、第 3 版) では、クライアントが SID を保存するには 2 つの方法があると述べています。1 つは cookie で、もう 1 つは URL を書き換えて渡す方法です。 php.ini ファイル内の session.use_trans_sid の値を変更して URL の自動書き換えを実現できますが、私はそれをテストしていません。

セッションがサーバー側に保存される方法

デフォルトでは、セッションはサーバーにファイルとして保存されます。関連する設定は php.ini ファイルで行うことができます:

<code class=" hljs avrasm">session<span class="hljs-preprocessor">.save</span>_handler=files session<span class="hljs-preprocessor">.save</span>_path = <span class="hljs-string">"N;MODE;/path"</span></code>
ログイン後にコピー

save_handler の値は 4 つあります:

  1. files フラット ファイル
  2. mmメモリの共有
  3. sqlite SQLite データベース
  4. user ユーザー定義関数

ユーザー モードを使用すると、カスタム関数を使用してセッションと連携できます。これは機能しているようです非常に強力です。しかし、それを実践する時間がありません。時間ができたらまた勉強します。

著作権表示: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート