ホームページ  >  記事  >  バックエンド開発  >  PHPセッション制御

PHPセッション制御

不言
不言オリジナル
2018-04-08 15:37:336683ブラウズ

この記事では、PHP セッション制御について紹介します。必要な友達は参考にしてください。


セッション制御

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

Web サイトでは、変数を追跡する必要があることがよくあります。変数を追跡することで、複数のリクエスト間の接続を確立し、承認とユーザー ID に基づいてさまざまなコンテンツやページを表示できます。これがセッション制御技術です。
一般的に使用されるセッション制御テクノロジには、が含まれます。 Cookieセッション。簡単に言えば、Cookie はクライアント側で情報を記録することによってユーザーの ID を決定し、Session はサーバー側で情報を記録することによってユーザーの ID を決定します。 <p style="margin-top:1.5em;margin-bottom:1.5em;color:rgb(51,51,51);font-family:'-apple-system', 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', 'Microsoft Yahei', sans-serif;font-size:14px;background-color:rgb(255,255,255);"></p> <h2 style="font-family:'-apple-system', 'Helvetica Neue'、Helvetica、Arial、'PingFang SC'、'Hiragino Sans GB'、'WenQuanYi Micro Hei'、'Microsoft Yahei'、sans-セリフ;フォントの太さ:500;行の高さ:1.2;カラー:rgb(51,51,51);マージントップ:1.5em;マージンボトム:0px;フォントサイズ:1.75em;ボーダーボトム:1px Solid rgb(238,238,238);padding-bottom:10px;background-color:rgb(255,255,255);">Cookie<code style="font-family:'Source Code Pro', Consolas, Menlo, Monaco, 'Courier New', monospace;font-size:.93em;padding:2px 4px;">Cookie 和 Session。简单地说,Cookie 是通过在客户端中记录信息而确定用户身份;Session 是通过在服务器端记录信息而确定用户身份。

Cookie

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

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

  2. 浏览器在接收到 HTTP 响应报文后,检查到 Set-Cookie

    Cookie は、Web サーバーとブラウザー転送の間の HTTP リクエスト メッセージに含まれる小さなテキスト ファイルです。 Cookie の仕組みは次のとおりです: 🎜
    1. 🎜サーバーは、Set-Cookie フィールドに Cookie データを Set-Cookie フィールドが HTTP メッセージとともにブラウザに渡されます。🎜 li>
    2. 🎜後HTTP 応答メッセージを受信すると、ブラウザは Set-Cookie フィールドには値があり、データを保存するために Cookie ファイルがローカルに作成されます。
    3. ブラウザが再度サーバーにリクエストを送信すると、ブラウザはまずローカルに保存された Cookie ファイルを検索し、接続されている URL に関連する Cookie が Cookie ファイル内にある場合は、HTTP リクエスト メッセージに Cookie を設定します。 .Cookie フィールドを選択し、そのフィールドに Cookie ファイル内のデータを追加し、最後に Cookie フィールドを含む HTTP リクエスト メッセージをサーバーに送信します。

    Cookie は、ユーザー名、パスワード、個人設定などの簡単な情報を保存するために使用できます。Cookie の使用手順は次のとおりです:

    Creation
    <?phpsetcookie("Cookie", "cookievalue", time()+3600);
    setcookie() は、HTML のコンテンツの前に呼び出す必要があります。ファイルが出力されます
    受信
    <?phpecho $_COOKIE["Cookie"];
    削除
    <?php#方法一:将值设为空setcookie("Cookie", null);#方法二:将过期时间设为过去时间setcookie("Cookie", "value" , time());

    関連学習の推奨事項: php cookie (特別なトピック)

    セッション

    セッションは、サーバー側でユーザーセッションデータを維持する方法です。次のように:

    1. ブラウザが初めて PHP スクリプトにアクセスするとき、seesion_start() 関数は、一意のセッション ID (各クライアントには一意の識別子があります) を作成し、HTTP 応答を通じてこのセッション ID をクライアントの Cookie に自動的に保存します。ヘッダ。同時に、ユーザーのセッション情報を保存するためにサーバー側でセッション ID という名前のファイルも作成されます seesion_start() 函数会创建一个唯一的 Session ID(每个客户端都有一个唯一的标识),并自动通过 HTTP 的响应头,将这个 Session ID 保存到客户端 Cookie 中。同时,也在服务器端创建一个以 Session ID 命名的文件,用于保存这个用户的会话信息;

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

    3. 服务器 PHP 脚本接受到客户端请求,这时 session_start()

      🎜🎜同じユーザーが再度この Web サイトにアクセスすると、Cookie に保存された情報が HTTP 経由で自動的に保存されます。リクエスト ヘッダーが引き継がれます 🎜🎜🎜🎜 サーバー PHP スクリプトがクライアント リクエストを受信し、session_start() この関数は新しいセッション ID を割り当てませんが、セッション ID と同じ名前のセッション ファイルを検索します。サーバーのハードディスクに保存されているセッション情報を読み出します。 🎜

    首先,创建 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的值]。每一个文件,里面保存了一个会话的数据。最后,保存在 Session 文件中的数据是经过序列化处理的,比如:

    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";

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

    创建
    //启动 sessionsession_start();//注册session变量,赋值为一个用户的名称$_SESSION["username"] = "jochen";//注册session变量,赋值为一个用户的ID$_SESSION["uid"] = 1;
    注意:必须在 HTML 文件的内容输出之前调用 session_start()
    读取
    <?phpsession_start();echo $_SESSION["username"]; # # jochenecho $_SESSION["uid"];      # 1
    销毁
    <?phpsession_start(); 
    unset($_SESSION["username"]);unset($_SESSION["uid"]);
    需要注意的是,当 session 文件比较多的情况下,将会产生 I/Q 读写性能问题。此时可以采用 memcached、redis 等缓存系统。

    相关学习推荐:php session(专题)

    相关推荐:

    PHP会话控制之cookie详解

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

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