動的 Web ページ テクノロジー Cookie とセッションの PHP 分析_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:37:05
オリジナル
765 人が閲覧しました

1. PHP COOKIE
Cookieは、リモートブラウザ側にデータを保存し、ユーザーの追跡と識別に使用する仕組みです。
PHP は http プロトコルのヘッダー情報で Cookie を送信するため、他の情報がブラウザーに出力される前に setcookie() 関数を呼び出す必要があります。これは header() 関数の制限と同様です。
1.1 Cookie を設定する:
setcookie() または setrawcookie() 関数を使用して Cookie を設定できます。 http ヘッダーをクライアントに直接送信することによっても設定できます。
1.1.1 setcookie() 関数を使用して Cookie を設定します。
bool setcookie ( string name [, string value [, intexpired [, string path [, string domain [, bool secure [, bool httponly]]]]])
name: Cookie 変数名
value: Cookie 変数値
Expired: 有効期間の終了、
パス: 有効なディレクトリ、
ドメイン: 有効なドメイン名、トップレベルドメインのみ
secure : 値が 1 の場合、Cookie は https 接続でのみ有効になります。デフォルト値 0 の場合、http と https の両方が使用可能です。
$value = からのもの。どこか;
setcookie("TestCookie ", $value); /* 簡単なクッキー設定*/
setcookie("TestCookie", $value, time()+3600) /* 有効期間は 1 時間*/
setcookie(" TestCookie", $value, time( )+3600, "/~rasmus/", ".example.com", 1); /* 有効なディレクトリ/~rasmus、有効なドメイン名 example.com とそのすべてのサブドメイン */
?>
複数の cookie を設定する 変数: setcookie(var[a],value); は変数を表すために配列を使用しますが、その添え字には引用符は必要ありません。このように $_COOKIE['var'][ 'a'] を使用して COOKIE 変数を読み取ります。
1.1.2. header() を使用して Cookie を設定します。
header("Set-Cookie: name=$value[;path=$path[;domain=xxx.com[; ...]]");
以下のパラメータ setcookie 関数のパラメータは上記と同じです。例:
$value = どこかからの何か;
header("Set-Cookie:name=$value") ;
1.2 Cookie の読み取り:
PHP 組み込みのスーパーグローバルを直接使用します。 変数 $_COOKIE はブラウザー側で Cookie を読み取ることができます。
上の例では、Cookie "TestCookie" を読み取ります:
print $ _COOKIE[TestCookie];
COOKIE は出力されましたか?!
1.3 Cookie を削除します
有効時間を現在時刻よりも小さく設定し、値を空に設定するだけです。例:
setcookie("name","")。 ,time()-1);
header() を同様に使用します。
1.4 よくある質問を解決しました:
1) setcookie() を使用するとエラー メッセージが表示されます。これは、setcookie() を呼び出す前に出力またはスペースがあることが原因である可能性があります。また、ドキュメントが他の文字セットから変換されており、ドキュメントの末尾に BOM 署名がある可能性もあります (つまり、ファイル内に非表示の BOM 文字をコンテンツに追加すること)。この状況は、ob_start() 関数を使用して処理することもできます
2) $_COOKIE は、magic_quotes_gpc の影響を受けるため、自動的にエスケープされる可能性があります
3) それを使用する場合、ユーザーが次のことを行うかどうかをテストする必要があります。 Cookie をサポートします

1.5 Cookie の動作メカニズム:
一部の学習者はより衝動的で、原則を勉強する時間がないため、後から配置します
a) サーバーが設定します。応答とともに http Set-Cookie ヘッダーを送信することでクライアントに Cookie を送信します (複数の Cookie には複数のヘッダーが必要です)
b) クライアントは自動的に http をサーバーに送信し、サーバーは Cookie ヘッダーを受信して​​読み取ります。
HTTP/1 .x 200 OK
X-Powered-By: PHP/5.2.1
Set-Cookie: TestCookie=どこかからのもの; path=/
Expires: Thu, 19 Nov 2007 18:52:00 GMT
キャッシュ制御: いいえ-store、no-cache、must-revalidate、post-check=0、pre-check=0
Pragma: no-cache
Content-type: text/html
この行を受け取った後、Cookie関数を実装します
。 -Cookie: TestCookie=どこかからのもの; path=/
ブラウザはクライアントのディスク上に Cookie ファイルを作成し、そこに書き込みます:
TestCookie=どこかからのもの;
/
この行は setcookie(TestCookie,これは、header(Set-Cookie: TestCookie=something from somewhere; path=/); を使用した結果でもあります。
< ;!--[endif]-->
2。 Session
session は、有効期限が 0 に設定された Cookie と、サーバー側でセッション ID と呼ばれる一意の識別子 (長い文字列) を使用します。 いくつかのセッション ファイルを同期的に生成します (セッションのストレージ タイプを自分で定義できます)。 Web アプリケーションはこれらのセッションに関連するデータを保存し、ユーザーのページ間でデータを転送できるようにします。
Web サイトを訪問する訪問者には、一意の識別子、いわゆるセッション ID が割り当てられます。これは、クライアント側の Cookie に保存されるか、URL 経由で渡されます。
セッションのサポートにより、ユーザーは任意の数の変数を登録し、リクエストごとに変数を予約できます。訪問者が Web サイトにアクセスすると、PHP は特定のセッション ID がリクエストで送信されたかどうかを自動的に (session.auto_start が 1 に設定されている場合)、またはユーザーがリクエストしたときに (session_start() によって明示的に呼び出されるか、session_register() によって暗黙的にチェックされます。 ))。その場合、以前に保存された環境が再作成されます。
2.1 セッションIDの送信
2.1.1 CookieによるセッションIDの送信
session_start()を使用してセッションファイルを生成する際、サーバーはデフォルト値のPHPSESSIDでセッションIDのハッシュ値とセッション名を生成します。送信される変数は (デフォルトでは) PHPSESSID (セッション名) であり、サーバーはこの Cookie を通じてクライアントと通信します。変数は PHP によって内部的にシリアル化され、マシン上のテキスト ファイルに保存されます。デフォルトでは変数名が PHPSESSID であるクライアントのクーリーと対話します。つまり、サーバーは http ヘッダーを自動的に送信します: header(Set-Cookie. : session_name()=session_id(); path=/) ;
つまり、setcookie(session_name(),session_id());
このページから新しいページにジャンプして session_start() を呼び出すと、PHP はセッションをチェックします指定された ID に関連付けられたサーバー側に保存されているデータが見つからない場合は、新しいデータセットを作成します。
2.1.2 URL を介してセッション ID を送信します。
ブラウザーの Cookie はユーザーが Cookie の使用を禁止している場合にのみ使用されます。すでに汎用であり、セキュリティ上の理由から、このメソッドは必要ありません
、セッションは POST 値を介して渡すこともできます。
2.2 session の基本的な使用例
// page1.php
session_start();
echo ページ #1;
/* へようこそセッション変数を作成し、セッション変数に値を割り当てます*/
$_SESSION[favcolor ] = green;
$_SESSION[animal] = cat;
$_SESSION[time] = time();
// クライアントが Cookie を使用する場合、セッションは page2.php に直接渡すことができます
echo
< ;a href="page2.php">page 2
;
// クライアントが Cookie を無効にしている場合
echo
page 2;
/*
デフォルトの php5.2.1 では、SID は Cookie が書き込まれるときにのみ値を持ちます。セッション
に対応するCookieがすでに存在する場合、SIDは(未定義)空になります
*/
?>
// page2.php
session_start();
print $_SESSION[animal]; // 単一のセッションを出力します
var_dump($_SESSION); // php
?>から渡されたセッション値を出力します
2.3 ページのキャッシュを制御するには、セッション関数を使用します。 Web ページがクライアントにキャッシュされているかどうかを確認したり、キャッシュの有効期間を設定したりできます。たとえば、一部の Web ページの機密コンテンツがローカルにキャッシュされている場合は、ローカル キャッシュを開いて参照できます。
session_cache_limiter (プライベート) を使用すると、ページのクライアント キャッシュを制御できます。これは session_start() を呼び出す前に行う必要があります。
その他のパラメータについては、http://blog.chinaunix でクライアント キャッシュ コントロールを参照してください。 .net/u/27731/showart.php?id=258087.
session_cache_expire(int); 単位を使用して、クライアントのキャッシュ時間を制御します。これは session_start() の前に呼び出す必要があります。
これは単なるメソッドです。セッションを使用するときにキャッシュを制御することもできます。
2.4 セッションの削除には 3 つの手順が必要です。
< // 最初の手順:
SetCookie (session_name (), time () -3600); を使用するサーバー側セッション ファイル: // ステップ 2: 実際のセッションを削除します:
$_Saction: = array (); 現時点での最良の方法は、このとき、関数 bool session_set_save_handler (callback open、callback close、callback read、callback write、callback destroy、callback gc) がこの問題の解決策です。
この関数で使用される 6 つの関数は次のとおりです。以下のように:
1. bool open() はセッション ストレージ メカニズムを開くために使用されます。
2. bool close() はセッション ストレージ操作を閉じます。
3. mixde read() はストレージからセッション データをロードするときに使用されます。 4. bool write() は、指定されたセッション ID のすべてのデータをストレージに書き込みます
5. bool destroy() は、指定されたセッション ID に関連付けられたデータを破棄します
6. ストレージ システムの bool gc() データはガベージ コレクションされます
例については、PHP マニュアルの session_set_save_handler() 関数を参照してください。
クラスを使用して処理する場合は、
session_set_save_handler(
array(className,
) を使用します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486616.html技術記事 1. PHP の COOKIE クッキーは、リモートのブラウザ側にデータを保存し、それを使用してユーザーを追跡および識別するメカニズムです。 PHP は http プロトコルのヘッダー情報で Cookie を送信するため、setcookie() 関数は...

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