PHPセッションテクノロジーには主に何が含まれていますか?

silencement
リリース: 2023-02-24 18:44:01
オリジナル
2643 人が閲覧しました

PHPセッションテクノロジーには主に何が含まれていますか?

この記事では主にPHPの会話機構であるCookieとセッションについて説明します。

Cookie の概要

Cookie はクライアントのブラウザに保存されるデータであり、当社は Cookie を使用してユーザー データを追跡および保存します。通常、Cookie は HTTP ヘッダーを介してサーバーからクライアントに返されます。ほとんどの Web プログラムは Cookie の操作をサポートしていますが、Cookie は HTTP ヘッダーに存在するため、ヘッダー関数の使用制限と同様に、他の情報を出力する前に設定する必要があります。

PHP は setcookie 関数を通じて Cookie を設定します。ブラウザから返された Cookie はすべて、PHP によって $_COOKIE のグローバル変数に自動的に保存されるため、$_COOKIE['key' ] を使用して Cookie を読み取ることができます。価値。

PHP の Cookie は非常に広く使用されており、ユーザーのログイン情報やショッピング カートなどの保存によく使用されます。セッションを使用する場合、通常、Cookie はユーザーを識別するためのセッション ID を保存するために使用されます。有効期間が過ぎると、Cookie はクライアントから自動的に削除されます。同時に、セキュリティ制御のために、Cookie にはドメインとパスを設定することもできますが、それらについては後の章で詳しく説明します。

Web サイトのセキュリティのため、当サイトでは当面 Cookie 変数の表示機能を提供しておりません。ローカルでテストしてください。

Cookie を設定してください

PHP Cookie を設定する最も一般的な方法は、setcookie 関数を使用することです。Setcookie には 7 つのオプションのパラメータがあります。一般的に使用する最初の 5 つは次のとおりです:

name (Cookie 名) には、$_COOKIE[ を通じてアクセスできます。 'name']

value (Cookie 値)

expire (有効期限) Unix タイムスタンプ形式、デフォルトは 0 で、ブラウザを閉じると有効期限が切れることを意味します

path (有効なパス) if パスが「/」に設定されている場合、Web サイト全体が有効です

domain (有効なドメイン) デフォルトでは、ドメイン名全体が有効です。 ' が設定されている場合、www サブドメインでのみ有効です

$value = 'test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600);  //有效期一小时
setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域
ログイン後にコピー

PHP で Cookie を設定する関数 setrawcookie もあります。Setrawcookie は基本的に setcookie と同じです。唯一の違いは、値が自動的に設定されないことです。 urlencode されているため、必要に応じて urlencode を手動で実行する必要があります。

setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);
ログイン後にコピー

Cookie は HTTP ヘッダーを通じて設定されるため、ヘッダー メソッドを使用して直接設定することもできます。

header("Set-Cookie:cookie_name=value");
ログイン後にコピー

Cookie の削除と有効期限

これまでの章で Cookie を設定する機能について学習しましたが、Cookie を削除する機能がないことがわかりました。 PHP で Cookie を削除するには、setcookie 関数を使用します。

setcookie('test', '', time()-1);
ログイン後にコピー

Cookie の有効期限が現在時刻より前に設定されている場合、Cookie は自動的に期限切れになり、Cookie を削除する目的が達成されることがわかります。この設計の理由は、Cookie が HTTP ヘッダーを介して渡されるためです。クライアントは、サーバーから返された Set-Cookie セグメントに基づいて Cookie を設定します。Cookie を削除するために新しい Del-Cookie を使用する必要がある場合、HTTP ヘッダーが複雑になります。実際、Cookie の設定、更新、削除は Set-Cookie を通じて簡単かつ明確に行うことができます。

原理を理解した後は、ヘッダーから直接 Cookie を削除することもできます。ここでは、

header("Set-Cookie:test=1393832059; expires=".gmdate('D, d M Y H:i:s \G\M\T', time()-1));
ログイン後にコピー

gmdate を使用してグリニッジ標準時を生成し、時差の影響を排除しています。

セッションと Cookie の類似点と相違点

Cookie はクライアントにデータを保存し、ユーザーとサーバー間の接続を確立します。通常は多くの問題を解決できますが、Cookie はクライアントにデータを保存し、ユーザーとサーバー間の接続を確立します。それでもいくつかの制限があります:

Cookie は比較的安全ではなく、簡単に盗まれて Cookie のなりすましにつながる可能性があります

単一の Cookie の値は最大 4k しか保存できません

すべてのリクエストにはネットワーク接続が必要です 送信、占有帯域幅

session は、サイズ制限なしでユーザーのセッション データをサーバー側に保存し、session_id を通じてユーザーを識別します。デフォルトでは、PHP セッション ID は次のとおりです。 Cookie を介して保存されるため、Seesion はある程度まで Cookie に依存しています。ただし、これは絶対的なものではなく、セッション ID はパラメータを通じて実装することもでき、識別のためにセッション ID をサーバーに渡すことができる限り、セッションを使用できます。

セッションの使用

PHP でセッションを使用するのは非常に簡単です。最初に session_start メソッドを実行してセッションを開き、次にグローバル変数 $ を介してセッションの読み取りと書き込みを行います。 _セッション。

session_start();
$_SESSION['test'] = time();
var_dump($_SESSION);
ログイン後にコピー

session は、設定される値を自動的にエンコードおよびデコードするため、セッションはデータやオブジェクトを含むあらゆるデータ型をサポートできます。

session_start();
$_SESSION['ary'] = array('name' => 'jobs');
$_SESSION['obj'] = new stdClass();
var_dump($_SESSION);
ログイン後にコピー

デフォルトでは、セッションはファイルの形式でサーバーに保存されます。したがって、ページ上でセッションが開かれると、セッション ファイルが排他的に占有されます。これにより、現在のページへの他の同時アクセスが発生します。ユーザーは実行できず待機することになります。

セッションの削除と破棄

セッション値を削除するには、PHP の unset 関数を使用できます。削除後は、グローバル変数 $_SESSION から削除されるため、セッション値を削除することはできません。アクセスされる。

session_start();
$_SESSION['name'] = 'jobs';
unset($_SESSION['name']);
echo $_SESSION['name']; //提示name不存在
ログイン後にコピー

すべてのセッションを削除したい場合は、session_destroy 関数を使用して現在のセッションを破棄できます。session_destroy はすべてのデータを削除しますが、session_id はまだ存在します。

session_start();
$_SESSION['name'] = 'jobs';
$_SESSION['time'] = time();
session_destroy();
ログイン後にコピー

值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。

session_start();
$_SESSION['name'] = 'jobs';
$_SESSION['time'] = time();
unset($_SESSION);
session_destroy(); 
var_dump($_SESSION); //此时已为空
ログイン後にコピー

如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。

使用session来存储用户的登录信息

session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等。

用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储。

$_SESSION['uid'] = $userinfo['uid'];
$_SESSION['userinfo'] = $userinfo;
ログイン後にコピー

一般来说,登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。

以上がPHPセッションテクノロジーには主に何が含まれていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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