こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP のsetcookie()関数について

PHP5を使ったHTML文書で、setcookie()関数を使っていますが、以下のようなメッセージが出てきてクッキーに新しいデータを書き込むことが出来ません。
環境はWindows10, IE11です。

PHP使用方法:
$fname="mondai10.txt"
setcookie("filename", $fname);  // line 38
setcookie("version",3); // line 39

メッセージ:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\QAmondaiDisplay.php:3) in C:\xampp\htdocs\QAmondaiDisplay.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\QAmondaiDisplay.php:3) in C:\xampp\htdocs\QAmondaiDisplay.php on line 39

そしてこのクッキーを次のようにJavaScriptで読み込んでいるのですが、表示させてみると書き込んだものとは全く異なるものが表示されます。
JavaSript 使用法:
var cookiedata = window.document.cookie;
window.document.getElementById("q1").innerHTML =cookiedata;;

実際に表示されるもの:
PHPSESSID=57c35633ffc2fe44622ee27e61bf44eb; filename=yasudaShiroexpires=Mon, 08 Oct 2018 21:44:48 GMT
そしてこの表示は、最後の時間以外はいつも同じです。
どこに問題があるのでしょうか?
詳しい方、どうか教えてください。

投稿日時 - 2018-10-09 06:59:29

QNo.9545739

困ってます

質問者が選んだベストアンサー

そのエラーは既にHTMLボディの出力が始まった後にHTTPヘッダーの出力を行う命令が実行されたので処理できなかったと言っています。

setcookie() を実行する場所をもっと前にしましょう。

投稿日時 - 2018-10-09 09:11:49

お礼

早速のご回答有難うございます。
確かにHTMLのヘッダーを書く前にPHPのコードを書いていました。
ヘッダーを前に持ってきて、問題解決しました。

投稿日時 - 2018-10-09 15:04:30

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\QAmondaiDisplay.php:3)

QAmondaiDisplay.phpの3行目ですでにレスポンスヘッダが送出済みになっています。QAmondaiDisplay.phpの3行目を確認してください。

というかセッションのCookieが存在しているということは、先にsession_start()しているのではありませんか?

投稿日時 - 2018-10-09 09:50:22

お礼

早速のご回答有難うございます。
おっしゃる通り、HTMLのヘッダーよりも前にPHPでsession_start()していました。
ヘッダーを前に持ってきて、問題解決しました。

投稿日時 - 2018-10-09 15:07:01

あなたにオススメの質問