ホームページ  >  記事  >  バックエンド開発  >  php $_cookie の値が保存されている値と異なる理由の簡単な分析

php $_cookie の値が保存されている値と異なる理由の簡単な分析

PHPz
PHPzオリジナル
2023-03-22 16:54:221210ブラウズ

PHP $_COOKIE を使用して Cookie 値を取得する場合、取得した値が保存されている値と異なる場合があるため、コードのデバッグと検査を行う必要があります。

取得した Cookie の値が保存されている値と異なる原因をいくつか紹介します。

  1. 一貫性のない変数名

Cookie 自体は標準 HTTP プロトコルのリクエスト ヘッダーであるため、Cookie を保存するときに使用される変数名は取得時に使用した変数名と一致している必要があります。変数名が一致しない場合、取得される値は格納される値と異なります。

例:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/');
 
// 获取cookie时
$test = $_COOKIE['Test'];

この例では、Cookie を保存するときに使用される変数名は「test」ですが、取得するときに「Test」が使用されるため、次の値が取得されます。保存されている値とは異なります。

  1. Cookie アクション パスが一貫していません

変数名と同様に、Cookie アクション パスも一貫している必要があります。 Cookie を保存するときにアクション パスが指定されているが、Cookie を取得するときに指定されていない場合、取得される値は保存されている値とは異なります。

例:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/test');
 
// 获取cookie时
$test = $_COOKIE['test'];

この例では、Cookie を保存するときにアクション パスが「/test」として指定されていますが、Cookie を取得するときに指定されていないため、値が異なります。

  1. Cookie の有効期限が一致していません

Cookie を保存するときに有効期限が指定されているが、Cookie を保存するときに有効期限を超えている場合が取得された場合、取得された値は null になります。

例:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/');
 
// 过了过期时间再获取cookie时
sleep(3605);
$test = $_COOKIE['test'];

この例では、保存された Cookie の有効期限は 1 時間後ですが、Cookie を取得した時点では有効期限が過ぎているため、取得された値は次のようになります。ヌル。

  1. Cookie のクロスドメインの問題

Cookie が保存されているドメイン名が Cookie を取得するドメイン名と一致しない場合、取得された Cookie の値も、Cookie の取得に使用されたドメイン名と一致しません。

例:

// 存入cookie时
setcookie('test', 'abc', time() + 3600, '/', '.example.com');
 
// 在另一个域名上获取cookie时
$test = $_COOKIE['test'];

この例では、Cookie を保存するときにドメイン名「.example.com」が指定されていますが、別のドメイン名の Cookie を取得すると、 Cookie を取得しない、または別の値を取得することはできません。

概要:

クロスドメイン Cookie の問題を回避するには、変数名、アクション パス、有効期限、ドメイン名が一貫していることを確認してください。 Cookieの値を取得して保存する 入力された値が異なる理由。コードをデバッグするときは、不要なエラーを避けるために、これらの問題に必ず注意してください。

以上がphp $_cookie の値が保存されている値と異なる理由の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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