その結果、setcookieで設定したCookieが有効にならず、ブラウザ上に表示されないという問題が発生しました。確認したところ、setcookie は HTTP リクエスト応答のヘッダーによって完了しており、(他のヘッダー設定と同様に)リクエスト応答の内容が出力される前に実行する必要があることがわかりました。
php.iniのerror_reporting = E_ALLの場合、内容を出力してからCookieを設定すると、以下のプロンプトが表示されます:
Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\b.php:2) in … on line …
ただし、その時点ではphp.iniがerror_reporting = E_ALL & ~E_NOTICEに設定されていたため、プロンプトがなかったため、これが開発されました。異常な状況の観察を容易にするために、error_reporting = E_ALL を設定することをお勧めします。
setcookie の使用例を添付します
a.php
<?php setcookie("page", "a.php"); $page = $_COOKIE["page"] ? $_COOKIE["page"] : "unknown"; echo "From " . $page . "<br /><br />"; ?> This is a.php. Go to <a href="b.php">b.php</a>
b.php
<?php setcookie("page", "b.php"); $page = isset($_COOKIE["page"]) ? $_COOKIE["page"] : "unknown"; echo "From " . $page . "<br /><br />"; ?> This is b.php. Go to <a href="a.php">a.php</a>
上記は、Cookie 設定 PHP setcookie 設定 Cookie の使用法と無効な設定 (Cookie 設定を含む) を紹介しています。PHP チュートリアルに興味があることを願っています 友達のヘルプ。
関連記事: