PHP セッション制御セッションと Cookie の概要

小云云
リリース: 2023-03-20 16:58:02
オリジナル
1687 人が閲覧しました

1. Cookie

1>Cookie の概要

Cookie は、Cookie を通じてクライアントのブラウザに保存されるデータです。通常、Cookie は HTTP ヘッダーを通じてサーバーからクライアントに返されます。 Cookie は HTTP ヘッダーに存在するため、ほとんどの Web プログラムは Cookie 操作をサポートします。
PHP では、Cookie は setcookie 関数を通じて設定されます。ブラウザから返された Cookie については、PHP はそれを

_COOKIE[‘key’] の形式で自動的に保存し、特定の Cookie 値を読み取ります。
セッションを使用する場合、通常、ユーザーを識別するためのセッション ID を保存するために Cookie が使用されます。Cookie には有効期限があり、有効期限が切れると、Cookie はクライアントから自動的に削除されます。

2>Set cookie
setcookie()
意味: setcookie() 関数には 7 つのパラメータがあります (一般的に使用されるパラメータは 5 つだけです)。
構文: setcookie(name, value,expired, path, domain, secure, httponly)
戻り値: この関数を呼び出す前に出力がある場合、setcookie() は失敗し、FALSE を返します。 setcookie() が正常に実行されると、TRUE が返されます。これは、ユーザーが Cookie を受け入れるかどうかを示すものではありません。

パラメータ:
名前:
Cookie の名前。$_COOKIE[‘name’] を通じてアクセスします。
値:
クッキーの値
有効期限:
クッキーの有効期限が切れる時刻。これは秒単位の Unix タイムスタンプです。 time() 関数に有効期限が切れるまでの秒数を加えて設定できます。または、mktime() を使用することもできます。 0 に設定するか省略した場合、Cookie はセッションの終了時 (ブラウザが閉じられたとき) に期限切れになります。デフォルトは 0 です。
パス:
(有効なパス) パスが「/」に設定されている場合、Web サイト全体が有効になります。「/foo/」に設定されている場合、Cookie は /foo/ ディレクトリと、/foo/bar/ などのすべてのサブディレクトリにのみ存在します。利用可能なドメイン。
ドメイン:
(Cookie が使用可能なドメイン) デフォルトでは、ドメイン全体 (そのすべてのサブドメインを含む) で Cookie を使用できるようにするには、値をドメイン名に設定するだけです (この場合、 「例.com」)。
安全:
この Cookie がクライアントの安全な HTTPS 接続経由でのみ送信できることを示します。 TRUE に設定すると、安全な接続が存在する場合にのみ Cookie が設定されます。サーバー側では、プログラマは安全な接続でのみこの種の Cookie を送信できます (例:

value, time()+3600, “path/”, “baidu.com” に相対) // パスとドメインを設定します。

3>Cookieの削除と有効期限
PHPにはCookieを削除する機能はありませんが、その代わりにCookieの有効期限を現在時刻よりも前に設定することで、自動的にCookieの有効期限が切れ、Cookieが削除されます。

4> Cookie が空かどうかを判断する
isset()
意味: 特定の Cookie が存在するかどうかを判断します。
構文: isset (対応する cookie 属性);
戻り値: true/false

setcookie("name","SYN");if( isset( $_COOKIE["name"])){    echo  $_COOKIE["name"];
}else{    echo "不存在";
}
ログイン後にコピー

Session と cookie の類似点と相違点

cookie:
1. クライアントにデータを保存し、ユーザーとサーバー間の接続を確立すると、通常は多くの問題を解決できますが、Cookie には依然としていくつかの制限があります:
2. Cookie は比較的安全性が低く、簡単に盗まれる可能性があり、Cookie 詐欺につながります
3. 1 つの Cookie の値は最大 4K までしか保存できません
4. 各リクエストにはネットワーク送信が必要であり、帯域幅を占有します

session:
1. ユーザーのセッション データをサイズ制限なしでサーバーに保存します
2. ユーザーの識別は session_id によって実行されます。デフォルトでは、PHP セッション ID は cookie によって保存されます

//开始使用sessionsession_start();//设置一个session$_SESSION['test'] = time();//显示当前的session_idecho "session_id:".session_id();echo "<br>";//读取session值echo $_SESSION['test'];//销毁一个sessionunset($_SESSION['test']);echo "<br>";
var_dump($_SESSION);
ログイン後にコピー

2. Session

1>セッションの使用法

まず session_start メソッドを実行してセッションを開き、次に使用しますグローバル変数 $ _SESSION はセッションの読み取りと書き込みを行います。デフォルトでは、セッションはファイルの形式でサーバーに保存されるため、ページ上でセッションが開かれると、セッション ファイルが排他的に占有され、現在のユーザーの他の同時アクセスが実行できなくなります。待って。この問題は、キャッシュまたはデータベース ストレージを使用することで解決できます。
セッションは、設定される値を自動的にエンコードおよびデコードするため、データやオブジェクトを含むあらゆるデータ型をサポートできます。

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

2>セッションを削除して破棄

unset()
PHP では、unset 関数を使用して特定のセッション値を削除します。削除後、その値はグローバル変数 $_SESSION から削除され、アクセスできなくなります。

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

session_destroy()
session_destroy 関数はすべてのデータを削除しますが、session_id はまだ存在します。

すごい

特別な注意:
session_destroy() はグローバル変数をすぐには破棄しません

_SESSION は空のみなので、$_SESSION をすぐに破棄する必要がある場合は、unset() を使用できます。

3>セッションを使用してユーザーのログイン情報を保存します

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

<?phpsession_start();//假设用户登录成功获得了以下用户数据$userinfo = array(    &#39;uid&#39;  => 1011,    'name' => 'spark',    'email' => '1637167XX@qq.com',    'sex'  => 'F');
header("content-type:text/html; charset=utf-8");/* 将用户信息保存到session中 */$_SESSION['uid'] = $userinfo['uid'];$_SESSION['name'] = $userinfo['name'];$_SESSION['userinfo'] = $userinfo;//* 将用户数据保存到cookie中的一个简单方法 */$str =serialize($userinfo); //将用户信息序列化setcookie('userinfo', $str);
ログイン後にコピー

了解更多关于序列化serialize;

相关推荐:

php用户登录代码session、cookie自动记忆功能

cookie 和session 的定义和区别

php session会话如何写入redis

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

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