ホームページ  >  記事  >  バックエンド開発  >  PHPでのセッション処理(詳細コード説明)

PHPでのセッション処理(詳細コード説明)

藏色散人
藏色散人転載
2020-01-25 11:59:313109ブラウズ

PHPでのセッション処理(詳細コード説明)

セッション処理は、Web サイトまたはアプリケーションのすべてのページにわたってユーザー情報を変更しないようにする PHP の重要な概念です。以下の記事ではPHPにおけるセッション処理の基礎知識を解説していますので、ご参考になれば幸いです。

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

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

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

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

次の図は、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 関数を使用できます。

PHPでのセッション処理(詳細コード説明)

このようにすると、$_SESSION['logged_in_user_id'] 変数にアクセスできなくなります。 unset機能により削除されているためです。

5. セッションを破棄する

unset 関数を使用して特定のセッション変数を削除できることは上記でわかりましたが、セッション関連のデータをすべて削除したい場合は、すぐに、私たちは何をすべきですか?

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

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

PHPでのセッション処理(詳細コード説明)

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

注: 通常、session_destroy 関数はユーザーがログアウトする場合にのみ使用されます。

関連する PHP の知識については、php チュートリアル を参照してください。

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

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。