PHP でのセッション制御

不言
リリース: 2023-03-23 11:56:02
オリジナル
1365 人が閲覧しました

この記事の内容は、PHP でのペイント コントロールを共有することです。必要な友達はそれを参照してください。

セッション コントロール

HTTP プロトコルは、WEB サーバーとブラウザーの間で相互通信するためのプロトコルです。つまり、各 HTTP リクエストは互いに独立しています。したがって、HTTP プロトコルには、2 つのトランザクション間の状態を維持するためのメカニズムが組み込まれていません。たとえば、ユーザーがあるページをリクエストし、次に別のページをリクエストした場合、HTTP は 2 つのリクエストが同じユーザーからのものであるかどうかを知ることができません。

Web サイトでは、変数を追跡する必要があることがよくあります。変数を追跡することで、複数のリクエスト間の接続を確立し、承認とユーザー ID に基づいてさまざまなコンテンツやページを表示できます。これがセッション制御技術です。

一般的に使用されるセッション制御テクノロジには、CookieSession が含まれます。簡単に言えば、Cookie はクライアント側で情報を記録することによってユーザーの ID を決定し、Session はサーバー側で情報を記録することによってユーザーの ID を決定します。 CookieSession。简单地说,Cookie 是通过在客户端中记录信息而确定用户身份;Session 是通过在服务器端记录信息而确定用户身份。

Cookie

Cookie 是一个很小的文本文件,包含在 HTTP 请求报文中在 Web 服务器和浏览器之间传递。Cookie 的工作原理如下:

  1. 服务器通过在 HTTP 响应报文中设置一个 Set-Cookie 字段,并把 Cookie 数据放在 Set-Cookie 字段中随着 HTTP 报文传给浏览器;

  2. 浏览器在接收到 HTTP 响应报文后,检查到 Set-Cookie 字段有值,会在本地创建一个 Cookie 文件来保存数据;

  3. 当浏览器再次向该服务器发送请求时,浏览器会先搜索本地保存的 Cookie 文件,如果在 Cookie 文件中有任何与正在连接的 URL 相关的 Cookie,就在 HTTP 请求报文中设置一个 Cookie 字段,并把 Cookie 文件中的数据添加到该字段中,最后把携带 Cookie 字段的 HTTP 请求报文发送给服务器。

Cookie 可以用来保存用户名、密码、个性化设置等一些简单的信息,以下是 Cookie 的使用说明:

创建
<?php
setcookie("Cookie", "cookievalue", time()+3600);
ログイン後にコピー
必须在 HTML 文件的内容输出之前调用 setcookie()
接收
<?php
echo $_COOKIE["Cookie"];
ログイン後にコピー
删除
<?php
#方法一:将值设为空
setcookie("Cookie", null);

#方法二:将过期时间设为过去时间
setcookie("Cookie", "value" , time());
ログイン後にコピー

Session

Session 是在服务器端保持用户会话数据的一种方法,其工作原理如下:

  1. 当浏览器第一次访问 PHP 脚本时,seesion_start() 函数会创建一个唯一的 Session ID(每个客户端都有一个唯一的标识),并自动通过 HTTP 的响应头,将这个 Session ID 保存到客户端 Cookie 中。同时,也在服务器端创建一个以 Session ID 命名的文件,用于保存这个用户的会话信息;

  2. 当同一个用户再次访问这个网站时,会自动通过 HTTP 的请求头将 Cookie 中保存的 Seesion ID 再携带过来;

  3. 服务器 PHP 脚本接受到客户端请求,这时 session_start() 函数就不会再去分配一个新的 Session ID,而是在服务器的硬盘中去寻找和这个 Session ID 同名的 Session 文件,将这之前为这个用户保存的会话信息读出。

首先,创建 Session 唯一标识的方法有两种:通过 Cookie 或者 GET 方式。PHP 在默认情况下使用 Session 会建立一个名叫 PHPSESSID 的 Cookie(可以通过 php.ini 修改 session.name 的值),如果客户端禁用cookie,可以指定通过 GET 方式把 Session ID 传到服务器(修改 php.ini 中 session.use_trans_sid 等参数)。其次,Session 是以文件的形式保存的。php.ini 中有个配置项 --session.save_path= "" ,这个里面填写的路径,将会保存所有 Session 文件。Session 文件的命名格式是:sess_[PHPSESSID的值]

Cookie

Cookie は、HTTP リクエスト メッセージに含まれ、Web サーバーとブラウザーの間で渡される小さなテキスト ファイルです。 Cookie の動作原理は次のとおりです。
サーバーは HTTP 応答メッセージに Set-Cookie フィールドを設定し、Cookie を配置します。 data Set-Cookie フィールドでは、HTTP メッセージとともにブラウザに送信されます
  • HTTP 応答メッセージを受信した後、ブラウザは を確認します。 Set- Cookie フィールドに値がある場合、データを保存するために Cookie ファイルがローカルに作成されます
  • ブラウザがサーバーにリクエストを再度送信すると、ブラウザは最初にローカルに保存された Cookie ファイルを検索し、Cookie ファイル内に接続されている URL に関連する Cookie がある場合は、HTTP リクエスト メッセージに Cookie フィールドを設定し、Cookie ファイル内のデータをフィールドに追加します。 Cookie フィールドを含む HTTP リクエスト メッセージがサーバーに送信されます。
    Cookie は、ユーザー名、パスワード、個人設定などの簡単な情報を保存するために使用できます。Cookie の使用手順は次のとおりです:
    作成

    cityID|i:0;cityName|s:3:"all";fanwe_lang|s:5:"zh-cn";fanwe_currency|a:4:{s:2:"id";s:1:"1";s:6:"name_1";s:9:"人民币";s:4:"unit";s:3:"¥";s:5:"radio";s:6:"1.0000";}_fanwe_hash__|s:32:"77c18770c6cb5d89444c407aaa3e8477";
    ログイン後にコピー

    はコンテンツの前に行う必要がありますsetcookie()

    Receive

    //启动 session
    session_start();
    
    //注册session变量,赋值为一个用户的名称
    $_SESSION["username"] = "jochen";
    
    //注册session变量,赋值为一个用户的ID
    $_SESSION["uid"] = 1;
    ログイン後にコピー

    Delete

    <?php
    session_start();
    echo $_SESSION["username"]; # # jochen
    echo $_SESSION["uid"];      # 1
    ログイン後にコピー

    Session

    🎜Sessionの呼び出しは、次のように動作します: 🎜
      < li>🎜ブラウザが初めて PHP スクリプトにアクセスすると、seesion_start() 関数によって一意のセッション ID (各クライアントには一意の ID があります) が作成され、自動的に渡されます。 HTTP 応答ヘッダーに含めるには、このセッション ID をクライアントの Cookie に保存します。同時に、ユーザーのセッション情報を保存するために、サーバー側でセッション ID が付けられたファイルも作成されます。🎜
    1. 🎜同じユーザーがこの Web サイトに再度アクセスすると、HTTP リクエストが自動的に渡されます。 header Cookie に保存されている Seesion ID を取得します 🎜
    2. 🎜 サーバーの PHP スクリプトがクライアントのリクエストを受信すると、session_start() 関数は検索の代わりに新しいセッション ID を割り当てません。サーバーのハードディスク上にあるセッション ID と同じ名前のセッション ファイルを作成すると、このユーザー用に以前に保存されたセッション情報が読み出されます。 🎜
    🎜 まず、セッションの一意の識別子を作成するには、Cookie または GET を使用する 2 つの方法があります。デフォルトでは、PHP はセッションを使用するときに PHPSESSID という名前の Cookie を作成します (session.name の値は php.ini を通じて変更できます)。クライアントが Cookie を無効にしている場合は、GET を通じてセッション ID を指定できます。 . それをサーバーに渡します (php.ini の session.use_trans_sid などのパラメーターを変更します)。次に、セッションはファイルの形式で保存されます。 php.ini に設定項目 --session.save_path= "" があり、パスを入力するとすべてのセッション ファイルが保存されます。セッション ファイルの命名形式は、sess_[PHPSESSID の値] です。各ファイルにはセッションのデータが保存されます。最後に、セッション ファイルに保存されたデータは次のようにシリアル化されます: 🎜
    <?php
    session_start();
     
    unset($_SESSION["username"]);
    unset($_SESSION["uid"]);
    ログイン後にコピー
    🎜セッションは、ユーザー名、パスワード、個人設定などの簡単な情報を保存するためにも使用できます。セッションの使用手順は次のとおりです: 🎜 🎜作成🎜rrreee🎜注: HTMLファイルの内容が出力される前にsession_start()を呼び出す必要があります🎜🎜Read🎜rrreee🎜Destroy🎜rrreee🎜セッションファイルが多い場合、I/Q読み取りが発生することに注意してくださいパフォーマンスの問題を書きます。現時点では、memcached や redis などのキャッシュ システムを使用できます。 🎜🎜関連する推奨事項: 🎜🎜🎜PHP 学習用の配列🎜🎜🎜🎜🎜

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

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