PHP は http プロトコルのヘッダー情報で Cookie を送信するため、他の情報がブラウザーに出力される前に setcookie() 関数を呼び出す必要があります。これは header() 関数の制限と同様です。
1. Cookieを設定します:
a .
例:
Phpコード
b.
header("Set-Cookie: name=$value[;path=$path[;domain=xxx.com[ ; ...]]");
Php コード
Php コード
Cookieを削除
Php コード
setcookie("name"
,a.
setcookie() を呼び出す前に出力またはスペースがあることが原因である可能性があります。ドキュメントが別の文字セットから変換された可能性もあります。 一方、ドキュメントには BOM 署名が含まれている場合があります (つまり、ファイルの内容にいくつかの隠し BOM 文字が追加されています)。解決策は、文書内でこのようなことが起こらないようにすることです。 ob_start() 関数を使用して少し処理することもできます。
b.
$_COOKIEはmagic_quotes_gpcの影響を受けており、自動的にエスケープされる可能性があります
使用する場合、ユーザーがCookieをサポートしているかどうかをテストする必要があります
- -------------------------------------- ---------------------------------------------------- ---- ------------------------
b. クライアントは自動的に http Cookie ヘッダーをサーバーに送信し、サーバーはそれを受信して読み取ります。 http/1.x 200 OK ‐ ‐ ‐ ‐ t 、この行を受け取った後
TestCookie=どこかからの何か;
この行は setcookie('TestCookie','どこかからの何か','/'); を使用した結果です。これは
header('Set-Cookie: TestCookie=どこかからの何か; path=/'); を使用した結果です。
----------------------------------------------------- - - - - -分割線 - - - - - - - - - - - - - - - - - - - - --------------------------------
PHPセッション
セッションの最も核となる概念は、Web ページ間を移動するための追加データがサーバーに保存され、ID によって識別されることです。セッションを維持するには、ブラウザーは送信ごとにこの ID を持ち込む必要があります。
------------------------------------------ ---------------------------------------------------- ---- ----------------------------------
セッションIDを渡すには2つの方法があります:
a.
このページから新しいページにジャンプして session_start() を呼び出すと、PHP は指定された ID セッション データに関連付けられたサーバー側のストレージを確認します。見つからない場合は、新しいデータセットを作成します。
b
xxx、セッションは POST 経由で渡すこともできます価値。
クライアントが利用を禁止した場合
a. php.ini で session.use_trans_sid = 1 を設定するか、コンパイル時に --enable-trans-sid オプションをオンにして、PHP がページ間でセッション ID を自動的に渡すようにします。
b. URL を通じて値を手動で渡し、非表示のフォームを通じてセッション ID を渡します。
c. session_id をファイル、データベースなどに保存し、クロスページプロセス中に手動で呼び出します。
リンク: http://apps.hi.baidu.com/share/detail/41643457
セッションは、Cookie が無効な場合にも使用できます:
session.use_cookies in php.ini = 1、0 に変更すると、セッションはクライアントの Cookie ではなくサーバー側に保存されます。
session.save_path を通じてサーバーのセッションストレージの場所を表示できます
session use:
eg:
Php code
Php コード
簡単な例:
phpコード:
session_start();
if
(isset($_SESSION
['test_sess'
GET /test.php HTTP/1.1 Accept: */*
Referer: http://localhost/Accept-Language: zh-cn Accept-Encoding: gzip、deflate User-Agent : Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)
ホスト: localhost接続: キープアライブ Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3
HTTP/1.1 200 OK 引き続きサーバーへの 2 番目のリクエストを確認すると、Cookie PHPSESSID が引き続きサーバーに送信されます。 以下の結論が得られます: 1. セッションが使用されている限り、セッションはクライアントのブラウザーに送信されます。 Cookie を介して 実際、セッションが実際に行うことは次のとおりです。 http および post によって提供されるパラメータは、追加情報を保存できる特定のユーザー (おそらくブラウザー、コンピューター、または IP) をターゲットとしています。システムが提供するセッションを使用しない場合は、データを転送することもできます。たとえば、最初にセッションに保存したいデータをシリアル化し、暗号化して文字列を形成し、すべての URL とフォームに渡すこともできます。ページ。サーバーはページリクエストを受信した後、get または post からシークレット文字列を取り出し、それを明らかにし、データを復元します。これは実際にはセッションと同じです。ただ、このメソッドは非常に優れており、実装するには余分な作業が多すぎるだけです。 技術的な観点から見ると、セッションとは、Web ページのリンク間に保存される追加データに ID を付けてサーバー側に保存することです。ブラウザは取得または投稿ごとに適切な ID を提供するだけで済みます。以前に保存されたデータ。 PHP はデフォルトでファイルを使用してデータを保存します。 Unix では、PHP は通常、/tmp の下に「sess_」+$session_id のようなファイル名を作成します。この名前を通じて、session_id に対応するデータを直接見つけることができます。 したがって、セッションの最も中心的な概念は、Web ページ間を移動するための追加データがサーバーに保存され、ID で識別されることです。セッションを維持するには、ブラウザーは送信ごとにこの ID を取得する必要があります。
上記では、PHP バージョン - HTTP セッション Cookie の原理とアプリケーションを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。
セカンドサーバーの戻り値:
日付: Fri, 26 Aug 2005 07:44:23 GMT
サーバー: Apache/2.0.54 (Win32) SVN/1.2.1 PHP/5.0.4 DAV/2
X- Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3; path=/
有効期限: Thu, 19 Nov 1981 08:52:00 GMT
キャッシュ制御: ストアなし、キャッシュなし、必須revalidate、post-check=0、pre-check=0
プラグマ: キャッシュなし
Content-Length: 1
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: text/ html; charset=utf-8
Content-Language: OFF This ヘッダーは Cookie 情報をサーバーに送信し、PHPSESSID という名前の Cookie があり、その内容が bmmc3mfc94ncdr15ujitjogma3 であることをサーバーに伝えます。 このクッキーはどこから来たのですか?初めてサーバーから返された情報を確認します: Set-Cookie: PHPSESSID=bmmc3mfc94ncdr15ujitjogma3; path=/
ブラウザはどのようにしてリクエストごとにこの ID を取得できるのでしょうか? もちろん、愚かな方法は、各 URL リンクまたはフォーム投稿に ID パラメータを追加することです。一部の Web メールは実際にこれを行っています。もちろん、より簡単な方法は、Cookie を使用して保存することです。しかし、Cookie ソリューションにはまだ問題があります。ブラウザが Cookie をサポートしていない場合はどうすればよいでしょうか? これは、上記でも述べたように、php4 および 5 によって提供されるセッション機能です。 php4 より前のセッション関数!また、多くの CGI プログラムは完全に自己実装されたセッションです。 php(4,5) によって提供されるセッションの場合、システムはデフォルトで Cookie を使用して session_id を保存します。以前のプロジェクトでは、ユーザーはすべてイントラネット上の Web を使用していました。管理を容易にするために、ブラウザ IP はセッションに直接関連付けられます。つまり、セッション ID の代わりにブラウザ IP アドレスが使用されます。このソリューションには Cookie はありませんが、セッションの定義の範囲外ではないため、依然としてセッションです。
サーバーにリクエストが行われるたびに、ローカルブラウザはリクエスト情報にCookieを添付します実際、それはセッションとは何の関係もなく、単にCookieがどのように機能するかについてですhttp プロトコル。この Cookie は session_start() 関数によって書き込まれ、有効期限が切れていない限り、ブラウザが任意に送信することもできます。