PHPセッション処理分析

王林
リリース: 2023-04-08 07:46:01
転載
3014 人が閲覧しました

PHPセッション処理分析

セッション処理は、Web サイトまたはアプリケーションのすべてのページにわたってユーザー情報を変更しないようにする PHP の重要な概念です。

PHP のセッションとは何ですか?

セッションは、Web サイトまたはアプリケーションを閲覧するユーザーを識別するために、さまざまな Web ページ上の情報を保持するメカニズムです。

誰もが次の疑問を抱くはずです: なぜ Web サイトにはセッションが必要なのでしょうか?この問題について議論する前に、HTTP プロトコルがどのように機能するかを振り返って見る必要があります。

HTTP プロトコルはステートレス プロトコルです。つまり、サーバーはリクエスト間で特定のユーザーを記憶することができません。たとえば、Web ページにアクセスすると、サーバーは要求されたページのコンテンツを提供することだけを担当します。そのため、同じ Web サイト上の他のページにアクセスすると、Web サーバーは各リクエストを互いに無関係であるかのように個別に解釈します。サーバーは、すべてのリクエストが同じユーザーからのものであることを知る方法がありません。

(無料の学習ビデオ チュートリアル:php ビデオ チュートリアル)

次の図は、HTTP プロトコルについて簡単に説明しています。

PHPセッション処理分析

このプロセスで、特定のユーザーの情報を表示したい場合は、各リクエストでユーザーを認証する必要があります。リクエストを行うたびに、認証のためにページにユーザー名とパスワードを入力する必要がある場合を想像してみてください。これは非常に面倒で、まったく実用的ではありません。ただし、この時点ではセッションが役に立ちます。

セッションを使用すると、ユーザーは単一のサイトまたはアプリケーションのさまざまなページ間で情報を共有できるため、状態の維持に役立ちます。これにより、すべてのリクエストが同じユーザーからのものであることがサーバーに認識され、サイトがユーザー固有の情報や設定を表示できるようになります。

次の図は、HTTP プロトコルがセッションでどのように使用されるかを示しています。

PHPセッション処理分析

#PHP はセッションをどのように処理しますか?

1. セッションの開始

セッション変数を処理する場合は、必ずセッションが開始されていることを確認する必要があります。 PHP でセッションを開始するには、いくつかの方法があります。

1)、session_start 関数を使用します。

これは最も一般的な方法で、session_start 関数によってセッションが開始されます。

PHPセッション処理分析

出力がブラウザに送信される前に、スクリプトの先頭で session_start 関数を呼び出すことが重要です。そうしないと、悪名高い「ヘッダーはすでに送信されました」というエラーが発生します。

2)、セッションを自動的に開始する

アプリケーション全体でセッションを使用する必要がある場合は、session_start 関数を使用せずにセッションを自動的に開始することも選択できます。

php.ini ファイルには設定オプション session.auto_start があり、リクエストごとにセッションを自動的に開始できます。デフォルトでは 0 に設定されていますが、1 に設定して自動開始機能を有効にすることができます。

PHPセッション処理分析

#2. セッション ID を取得します

サーバーは、新しいセッションごとに一意の ID を作成します。セッション ID を取得したい場合は、次のスニペットに示すように session_id 関数を使用できます。

PHPセッション処理分析

これにより、現在のセッション ID が得られます。 session_id 関数は、セッション ID という 1 つのパラメーターも受け取ることができるため、興味深いものです。システムが生成したセッション ID を独自のセッション ID に置き換える場合は、それを session_id 関数の最初のパラメーターに指定できます。

PHPセッション処理分析

カスタム セッション ID を使用してセッションを開始する場合は、session_start の前に session_id 関数を呼び出す必要があることに注意することが重要です。

3. セッション変数の作成

セッションが開始されると、$_SESSION は対応するセッション情報を使用してスーパー グローバル配列を初期化します。デフォルトでは、空の配列で初期化されます。キーと値のペアを使用して、より多くの情報を保存できます。

コード例を通じてセッション変数を初期化する方法を見てみましょう。

PHPセッション処理分析

上に示したように、スクリプトの先頭で session_start 関数を使用してセッションを開始し、その後、いくつかのセッション変数を初期化し、最後に $ _SESSION スーパー グローバルはこれらの変数にアクセスします。

$_SESSION スーパーグローバルを使用してセッションにデータを保存すると、データは最終的に、セッションの開始時に作成されるサーバー上の対応するセッション ファイルに保存されます。このようにして、セッション データは複数のリクエスト間で共有されます。

前述したように、セッション情報はリクエスト間で共有されるため、あるページで初期化されたセッション変数は、セッションが期限切れになるまで他のページからもアクセスできます。通常、ブラウザを閉じるとセッションが期限切れになります。

4. セッション変数の変更と削除

通常の PHP 変数を変更するのと同じように、アプリケーションで以前に作成したセッション変数を変更または削除できます。

セッション変数を変更する方法を例として見てみましょう。

PHPセッション処理分析

上記のスクリプトでは、まず $_session['count'] 変数が設定されているかどうかを確認します。設定されていない場合は 1 に設定され、設定されていない場合は 1 ずつ増加します。したがって、このページを複数回更新すると、毎回カウンターが 1 ずつ増加することがわかります。

一方、セッション変数を削除する場合は、次のコード スニペットに示すように、unset 関数を使用できます。この方法では、$_SESSION['logged_in_user_id'] 変数に再度アクセスできなくなります。 unset機能により削除されているためです。

5. セッションを破棄するPHPセッション処理分析

unset 関数を使用して特定のセッション変数を削除できることは上記でわかりましたが、セッション関連のデータをすべて一度に削除したい場合はどうすればよいでしょうか。 ?

実際には非常に簡単で、session_destroy 関数を使用できます。

session_destroy 関数がどのように機能するかを見てみましょう。

説明: session_destroy 関数は、現在のセッションに保存されているすべてのコンテンツを削除します。したがって、ディスクに保存されているセッション データが session_destroy 関数によって削除されると、後続のリクエストからは空のセッション変数が表示されます。

注: 通常、session_destroy 関数はユーザーがログアウトする場合にのみ使用されますPHPセッション処理分析

関連記事チュートリアルの推奨事項:

php チュートリアル

以上がPHPセッション処理分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!