ホームページ  >  記事  >  php教程  >  php cookie スコープ – 現在のページでは cookie を使用しないでください

php cookie スコープ – 現在のページでは cookie を使用しないでください

WBOY
WBOYオリジナル
2016-06-13 12:24:16789ブラウズ

ローカル テストではまったく問題がなかったので、リモート サーバー (公開サーバーではなく、公開サーバー上で直接変更しないことをお勧めします) に ssh 接続し、ブレークポイント テストを実施したところ、最終的にこの関数はコンストラクターでログイン検証を呼び出します。認証が通らなかったので飛び降りました。
プログラムによる php cookie の使用を見てみましょう。おそらく、上の段落を読んでも、これと cookie の間にはどのような関係があるのか​​疑問に思っているのではないでしょうか。
MVC 構造で使用されるログイン検証について一般的に説明します。
コントローラーのコンストラクターには、特にログインを検証する関数があります。この関数は、モジュールがログイン検証を必要とするかどうかに応じて追加されます。
バグ プログラム: setcookie の後、現在のページでログイン検証が行われます。
バグの原因: 現在のページはこのページに設定したばかりの Cookie を取得できません
プログラムでテストしてみましょう:
ここに Cookie を設定する関数があります。私は怠け者です。

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


function dsetcookie($var, $value, $life = 0) {
グローバル $_cookie_domain, $_cookie_path, $_timestamp, $_SERVER;
setcookie($var,scape($value), $life ? $_timestamp $life : 0,
$_cookie_path, $_cookie_domain, $ _SERVER['SERVER_PORT '] == 443 ? 1 : 0);

次に、次の内容の test1.php を作成します。コードをコピーします

コードは次のとおりです:

$td = date('d'); dsetcookie("testvar",$) td,30*24*60* 60);

print_r($_COOKIE)

?>


はいつ取得できますか?この $_COOKIE 変数を初めて使用する場合はどうすればよいでしょうか?
次に、test1.php プログラムを少し変更してみましょう:


コードをコピーします

コードは次のとおりです:

< ;? php $td = date('d'); dsetcookie("testvar",$td,30*24*60*60);//これは必要ですそれ以外の場合は、ヘッダー警告が報告されます。 $location = "test2.php"

header("Location: ".$location);


;
次に、test2.php に $_COOKIE を表示するには、見てください



コードをコピーします

コードは次のとおりです:



print_r ($_COOKIE); ?> ここで次のようになります: Array

(
[testvar] =10
)
こちら この Cookie 値を取得して使用できます。
なぜですか?

これは理解できます。現在設定されている Cookie はすぐには有効になりませんが、次のページまで表示されません。
これは、Cookie がサーバーからページ内でクライアントのブラウザに渡されるためです。ブラウザが
クライアントのマシンから Cookie を取り出して、次のページでサーバーに送り返すことができる理由。

最初にここに書いてください:


COOKIE について詳しくは、次のリンクをご覧ください



PHP COOKIE とその使用法

Netscape の Cookie の公式オリジナル定義: http://www.netscape.com/newsref/std/cookie_spec.html

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。