ホームページ バックエンド開発 PHPチュートリアル PHPでセッション処理を行うにはどうすればよいですか?

PHPでセッション処理を行うにはどうすればよいですか?

Feb 14, 2019 pm 05:40 PM
php session

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

PHPでセッション処理を行うにはどうすればよいですか?

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

セッションは、Web サイトまたはアプリケーションを閲覧するユーザーを識別するために、さまざまな Web ページ上の情報を保持するメカニズムです。 [ビデオチュートリアルの推奨: PHP チュートリアル]

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

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

次の図は、HTTP プロトコルを簡単に説明したものです。

PHPでセッション処理を行うにはどうすればよいですか?

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

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

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

PHPでセッション処理を行うにはどうすればよいですか?

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

1. セッションの開始

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

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

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

<?php
// 启动session
session_start();
 
// 操作会话变量
?>
ログイン後にコピー

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

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

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

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

session.auto_start = 1
ログイン後にコピー

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

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

<?php
session_start();
echo session_id();
?>
ログイン後にコピー

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

<?php
session_id(YOUR_SESSION_ID);
session_start();
?>
ログイン後にコピー

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

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

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

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

<?php
// 开启会话
session_start();
 
// 初始化会话变量
$_SESSION[&#39;logged_in_user_id&#39;] = &#39;1&#39;;
$_SESSION[&#39;logged_in_user_name&#39;] = &#39;Tutsplus&#39;;
 
// 访问会话变量
echo $_SESSION[&#39;logged_in_user_id&#39;];
echo $_SESSION[&#39;logged_in_user_name&#39;];
?>
ログイン後にコピー

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

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

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

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

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

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

<?php
session_start();
 
if (!isset($_SESSION[&#39;count&#39;]))
{
  $_SESSION[&#39;count&#39;] = 1;
}
else
{
  ++$_SESSION[&#39;count&#39;];
}
 
echo $_SESSION[&#39;count&#39;];
?>
ログイン後にコピー

在上面的脚本中,我们首先检查了是否设置了$_session['count']变量。如果没有设置,我们将设置为1,否则我们将增加1。因此,如果多次刷新此页,可以看到计数器每次递增一个!

另一方面,如果想要删除会话变量,可以使用unset函数,如下面的代码段所示:

<?php
// 开启会话
session_start();
 
// 初始化会话变量
$_SESSION[&#39;logged_in_user_id&#39;] = &#39;1&#39;;
 
// 取消设置会话变量
unset($_SESSION[&#39;logged_in_user_id&#39;]);
?>
ログイン後にコピー

这样,我们就无法再访问$_SESSION[‘logged_in_user_id’]变量了。因为它已被unset函数删除。

5、销毁会话

在上面我们知道可以使用unset函数来删除特定的会话变量;那么如果要一次删除所有与会话相关的数据,我们要怎么办?

其实很简单,我们可以使用session_destroy函数。

下面我们来看看session_destroy函数是如何工作的。

<?php
//开启会话
session_start();
 
// 假设我们已经在另一个脚本中初始化了几个会话变量
 
// 销毁此会话中的所有内容
session_destroy();
?>
ログイン後にコピー

说明:session_destroy函数删除存储在当前会话中的所有内容。因此,当存储在磁盘上的会话数据被session_destroy函数删除时,我们将从后续请求中看到一个空的会话变量。

注:通常,在用户注销时才会使用session_destroy函数。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles