ホームページ  >  記事  >  バックエンド開発  >  PHP_PHPチュートリアルのCookieとセッションアプリケーションの学習メモ

PHP_PHPチュートリアルのCookieとセッションアプリケーションの学習メモ

WBOY
WBOYオリジナル
2016-07-13 10:50:27812ブラウズ

PHPにおけるCookieとセッションの違いは、Cookieデータはクライアント側に保存されるのに対し、セッションデータはサーバー側に保存されることです。当然、使用方法に細かい違いはありますが、後者の方がはるかに安全です。前者。

1. cookie&sessionの概要と違い

Cookieデータはクライアント側に保存され、セッションデータはサーバー側に保存されます。

簡単に言えば、Web サーバーがセッションを使用している場合、Web サイトにログインすると、クライアントがサーバーにリクエストするたびに、現在のセッションのセッション ID が送信され、サーバーはそれを送信します。現在のセッションに基づいて sessionid を送信します。 sessionid は、ユーザーがログインしているか、または特定の権限を持っているかどうかを判断するために、対応するユーザー データ フラグを決定します。データはサーバー上に保存されるため、偽造することはできませんが、ログインしているユーザーのセッション ID を取得できれば、特殊なブラウザを使用してユーザーのリクエストを偽造することもできます。通常、セッション ID はサーバーとクライアントの接続時にランダムに割り当てられますが、同時リクエストが多い場合は重複する可能性があります。ウェブサイトにログインすると、最初は自分の情報が表示されますが、しばらくするとタイムアウトになり、更新すると実際には他人の情報が表示されます。

ブラウザが Cookie を使用している場合、すべてのデータはブラウザ側に保存されます。たとえば、ログイン後、サーバーは Cookie のユーザー名 (ユーザー名) を設定します。その後、サーバーに再度リクエストすると、ブラウザはユーザー名を設定します。ブロックはサーバーに送信され、これらの変数には特定の特別なマーキングが付けられます。サーバーはそれを Cookie 変数として解釈します。したがって、ブラウザが閉じられていない限り、Cookie 変数は常に有効になるため、長時間切断されないことが保証されます。ユーザーの Cookie 変数を傍受し、データ パケットを偽造して送信できたとしても、サーバーはユーザーが正当であると認識します。そのため、Cookieを利用した攻撃を受ける可能性が比較的高いと言えます。有効期間が設定されている場合、Cookie はクライアントのハード ドライブに保存されます。次回 Web サイトにアクセスすると、ブラウザはまず Cookie があるかどうかを確認し、Cookie がある場合はそれを読み取って送信します。それをサーバーに送信します。あなたのマシンにフォーラム Cookie を保存した場合、有効期間は 1 年間です。誰かがあなたのマシンに侵入し、あなたの Cookie をコピーし、それをブラウザのディレクトリに置いた場合、その人が Web サイトにログインすると、その情報はログに記録されます。あなたのアイデンティティと一緒に。したがって、クッキーは偽造できます。もちろん、偽造する際にはいくつかの工夫が必要です。Cookie ファイルをブラウザが認識しないように、Cookie ファイルを直接コピーすることもできます。この Web サイトの Cookie ファイルは、保証時間の観点からブラウザから騙される必要があります。私はかつて学校の VBB フォーラムで、他の人の Cookie をコピーしてログインし、誰かに投稿するという実験をしました。他の人の名前は全く問題ありませんでした。

セッションは、アプリケーションサーバーによって維持されるサーバー側のストレージスペースであり、ユーザーがサーバーに接続すると、サーバーによって一意のセッションIDが生成され、サーバー側のセッションストレージスペースにアクセスするための識別子として使用されます。 。 SessionID データはクライアントに保存され、ユーザーがページを送信すると、SessionID がサーバーに送信され、セッション データにアクセスします。このプロセスには開発者の介入は必要ありません。したがって、クライアントが Cookie を無効にすると、セッションも無効になります。

サーバーは URL 書き換えを通じて SessionID の値を渡すこともできるため、Cookie に完全に依存するわけではありません。クライアント Cookie が無効になっている場合、サーバーは URL を書き換えることでセッション値を自動的に保存でき、このプロセスはプログラマにとって透過的です。

Cookieを書かなくても、request.getCookies();で取り出されるCookieの配列の長さも1で、このCookieの名前はJSESSIONIDという長いバイナリ文字列になっています。これは SessionID の値です。


2. Cookieの設定と適用

基本構文: setcookie("cookie", "cookievalue", time()+3600, "/forum", ".xxx.com", 1);
- - (

Cookieへのアクセスと処理

基本文法にアクセス:

コードは次のとおりです コードをコピー
$mycookie をエコー;
エコー $cookiearray['0'];
echo $_COOKIE['mycookie'] (推奨)
echo $HTTP_COOKIE_VARS['mycookie'];

Cookieを削除する
基本的な構文を削除します:

コードは次のとおりです コードをコピー
setcookie("cookie",""); (元の値を空の cookie で上書きします)
setcookie("cookie", "value", time()-1/time()) (時間破壊)

例:

コードは次のとおりです コードをコピー

if ($_POST['ユーザー'] && $_POST['パスワード']) {
setcookie("us", $_POST['user']);
setcookie("pwd", $_POST['パスワード']);
echo "ユーザー:".$_COOKIE['us']."
"."パスワード:".$_COOKIE['pwd'];
}
?>


ユーザー:


パスワード:


注: Cookie は出力前に操作する必要があります。操作しないとエラーが発生します。

------------------------------------------------- -----

1.セッションの構成とアプリケーション

基本構文:

コードは次のとおりです コードをコピー
session_start(); //初期化はファイルヘッダーに配置する必要があります。
$_SESSION['name'] = 値; //セッションを設定します。
echo $_SESSION['name'] //セッションを使用します。
isset($_SESSION['name']); //判定。
unset($_SESSION['name']); //削除。
session_destroy(); //すべてのセッションを破棄します。

セッションとクッキーの違いを紹介するためにいくつかの例を示します

:セッション


セッションを開始:


session_start();


PS: この関数はファイルの先頭に配置する必要があります。先頭にスペースを入れずに先頭に記述するのが最善です。

セッションを設定します:

$_SESSION['名前']='値';

PS: 使用する場合は、$_SESSION[] メソッドを直接使用して値を設定します。「[ ]」の部分はセッションの名前で、「=」の後に値が続きます。

セッションを読む:

echo $_SESSION['name'];
设 PS: セッションを設定する場合でも、セッションを読み取る場合でも、まずセッションを開く必要があります (session_start () を使用します)。

セッションを破棄します:

1. ブラウザを閉じて、1 を自動的に破棄します。

                                                                                                                                                                                                     ​​


クッキーを設定する:

bool setcookie(文字列名[,文字列値[,int期限切れ[,文字列パス[,文字列ドメイン[,bool secure[,bool httponly]]]]])

O 名前: Cookie 変数名

C 値: Cookie 変数の値

to 目パス: 有効なカタログ、


ドメイン: 有効なドメイン名、一意のトップレベル ドメイン

結果 セキュア: 値が 1 の場合、Cookie は HTTPS 接続でのみ有効になります。デフォルト値 0 の場合、http と https は有効になります。

️ setcookie('username','hello', time()+3600);

setcookie("username",'hello', time()+3600,"/~rasmus/",".paea.cn",1);

C PS: 出力データ操作は setcookie の前に置くことはできません。そうしないと、session_start () と同様のエラーが発生します。

クッキーを読んでいます:

$_COOKIE['ユーザー名'] をエコーし​​ます。'||';

️ echo $HTTP_COOKIE_VARS["ユーザー名"];

クッキーを破棄します:

過去の時刻を設定して Cookie をログアウトします

️ setcookie('username','hello', time()-3600);
C PS: 出力データ操作は setcookie の前に置くことはできません。そうしないと、session_start () と同様のエラーが発生します。

要約すると

機能:

セッションと Cookie はどちらもユーザー データを一時的に記録するために使用されます。 違い:

1. SESSION はサーバー側に保存され、ユーザーは変更できませんが、COOKIE はクライアント側に保存され、ユーザーが変更できるため安全ではありません。

2.セッションはサーバー上に一定期間保存され、サーバーリソースを占有します。 Cookie は、ユーザーのウィンドウの下の Temp ディレクトリに保存されます。

3. クライアント上の 1 つの Cookie の制限は 4k です

4. セッションのトラバーサルには $_SESSION[] を使用し、Cookie のトラバーサルには $_COOKIE[] を使用します

5. Cookieを無効にするとセッションは使用できなくなります

6. セッションを使用する場合は、session_start() を追加する必要があり、以前の出力があってはなりません。

http://www.bkjia.com/PHPjc/632637.htmlwww.bkjia.com

tru​​e

技術記事 PHPにおけるCookieとセッションの違いは、Cookieデータはクライアント側に保存され、セッションデータはサーバー側に保存されることです。当然、使用方法に詳細はありますが、後者の方が優れています。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。