PHPのsetcookie()関数について
- PHPのsetcookie()関数を使用して、クッキーに新しいデータを書き込むことができない問題が発生しました。
- また、JavaScriptでクッキーを読み込んだ際に、書き込んだ内容と異なるものが表示される問題もあります。
- どこに問題があるのか詳しい方に教えていただきたいです。
- ベストアンサー
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 そしてこの表示は、最後の時間以外はいつも同じです。 どこに問題があるのでしょうか? 詳しい方、どうか教えてください。
- papashiroSooke
- お礼率90% (462/512)
- PHP
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そのエラーは既にHTMLボディの出力が始まった後にHTTPヘッダーの出力を行う命令が実行されたので処理できなかったと言っています。 setcookie() を実行する場所をもっと前にしましょう。
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
>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()しているのではありませんか?

お礼
早速のご回答有難うございます。 おっしゃる通り、HTMLのヘッダーよりも前にPHPでsession_start()していました。 ヘッダーを前に持ってきて、問題解決しました。
関連するQ&A
- PHPでクッキーをセットできない
PHPとJavaScriptを使っゲームを作っていますが、PHPでクッキーをセットしようとすると以下のようなメッセージが出てきて、データがセットされません。 「ヘッダー情報を修正できない」というメッセージはどんな意味なのでしょうか? setcookie()関数をどこで使えばうまくいくのでしょうか? 詳しい方がいらっしゃいましたら、よろしくお願いいたします。 使った関数=setcookie("gameOverTime", $cookieData, time() + 60*60); メッセージ= Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\QAgameOver.php:1) in C:\xampp\htdocs\QAgameOver.php on line 10
- ベストアンサー
- PHP
- phpのプログラムエラー
とあるサイトを参考にして、 excelファイルをダウンロードできるようにしたいと思い記述しましたが、 エラーが出て困っています。 どのように修正すればよいか、アドバイスいただけないでしょうか? php初心者のため、初歩的な質問かもしれませんこと、お許しください。 windows7を利用しています。 ■表示されたエラーの内容 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\phpkiso\download.php:9) in C:\xampp\htdocs\phpkiso\download.php on line 15 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\phpkiso\download.php:9) in C:\xampp\htdocs\phpkiso\download.php on line 17 Warning: readfile(依頼書ダミー.xls) [function.readfile]: failed to open stream: No such file or directory in C:\xampp\htdocs\phpkiso\download.php on line 19 ■プログラム <?php // ダウンロードさせるファイル名 $tmp_file = "依頼書ダミー.xls"; $j_file = "依頼書.xls"; $j_file = mb_convert_encoding($j_file, "SJIS", "EUC"); // ヘッダ header("Content-Type: application/octet-stream"); // ダイアログボックスに表示するファイル名 header("Content-Disposition: attachment; filename=$j_file"); // 対象ファイルを出力する。 readfile($tmp_file); exit; ?>
- ベストアンサー
- ブラウザ
- セッションとヘッダーの順序について
session_name("WebID"); session_start(); を header("Content-Type: text/html; charset=UTF-8"); のあとに呼び出すとエラーになります。 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\php\index.php:56) in C:\xampp\htdocs\php\verify.php on line 3 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\php\index.php:56) in C:\xampp\htdocs\php\verify.php on line 3 やはりセッションを先に呼び出さないといけないのでしょうか? session_unsetというものを使えばこの順序でもうまくいきますか? index.phpからエラーが起きたファイルを表示させているので、 順序は変えにくいのですが、順序を変えなくてもクリアできる 方法があったら教えてください。
- ベストアンサー
- PHP
- 会員管理システムを作っているのですが、エラーが出て困っています。
phpとsmartyで会員管理システムを構築しているのですが、以下のようなエラーが出て困っています。 エラー文 Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\Login.class.php:1) in C:\xampp\htdocs\login.php on line 5 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\Login.class.php:1) in C:\xampp\htdocs\login.php on line 5 Warning: Smarty error: unable to read resource: "login.tpl" in C:\xampp\htdocs\Smarty.class.php on line 1092 このエラー文は何と言っているのですか? また、解決方法が分かる方、ご回答お願いします。
- 締切済み
- PHP
- クッキーの利用
xfreeのphpサーバーを利用祖いているのですが、クッキーの利用ができません。 (Warning: Cannot modify header information - headers already sent by (output started at hoge/cookie.php bom付ではないか確認をしました。) (sessionも変数を破棄するページでWarning: Cannot modify header information - headers already sent by (output started at hoge/session.php のようなエラーが出ます。破棄のページのみなのでbom付ではないかと思われます。) 下記の画像php.iniはどのように設定すればいいですか?
- ベストアンサー
- ハードウェア・サーバー
- クッキーの削除がうまくいきません
<?php setcookie("a","おいしいクッキー"); $a=$_COOKIE["a"]; print "$a"; print "<br />"; setcookie("a","",time()-60); $b=$_COOKIE["a"]; print "$b"; ?> と書いて、クッキーの設定は出来たのですが、有効期限を過去にしても クッキーが削除されずにエラーメッセージが出ます。 エラーメッセージ Warning: Cannot modify header information - headers already sent by (output started at C:\Eclipse\workspace\PHP\cookie.php:7) in C:\Eclipse\workspace\PHP\cookie.php on line 11 宜しくお願い致します。
- ベストアンサー
- PHP
- phpでcookieのセット
こんばんは。 php4 apache でプログラミングしています。 cookieをセットしようとして、マニュアル通り setcookie ("TestCookie", "Test Value"); と記述すると、 Warning: Cannot add header information - headers already sent by (output started at /url~ といったエラーが出ます。 原因に心当たりのある方はアドバイス宜しくお願い致します。
- ベストアンサー
- PHP
- header関数が使えない
<html> <head> </head> <body> <?php header("Location: http://www.php.net/"); exit; ?> </body> </html> のように、単にheader関数を試したら Warning: Cannot add header information - headers already sent by (output started at /home/***/index.php:5) in /home/***/index.php on line 6 のようなエラーがでました。header関数が使えないようなのですが、これはどこの設定を直せば解決できるのでしょうか? 普通に、phpinfo.phpは表示できるので、phpそのものは使えています。 Apache/1.3.26 PHP 4.2.2
- ベストアンサー
- PHP
- PHPで他のページへジャンプする方法
phpを使って、WEBを作っています。だいぶPHPを使えるようになってきて、今が一番楽しいときです。 実は以前から引っかかっていて、解決できないことがありますのでお助けください。 if文などで、条件を満たしたときに別のページに移動したいのですが、その移動のさせ方に下のようなソースを記入しています。 if($row==1){ header("location:********.php"); } でも、どうもあまり良い方法ではないような気がしています。 (※*****はユーザー名やファイル名です。) 下のようなエラーが表示されました。 Warning: Cannot modify header information - headers already sent by (output started at /usr/local/www/htdocs/******/public_html/******.php:17) 他のページにジャンプするような関数は何かないのでしょうか。 どなたか詳しい方宜しくご指導お願いいたします。
- ベストアンサー
- PHP
- COOKIEの保存がうまくいかない
PHP 5.0.4でテストしているのですが、 以下のソースでうまくCOOKIEが保存できません 原因がお分かりになる方がいらっしゃいましたらご指導のほどお願いします。 <html> <body> <?php setcookie("email","ABC",time()+(60*60*24*90)); ?> クッキーを保存しました。 </body> </html> 実行すると Warning: Cannot modify header information - headers already sent by (output started at XXX.php:3) in XXX.php on line 3 クッキーを保存しました。 と表示されてしまいます。 COOIKEにも正常に保存されていないようです Perlでのプログラミング経験はありますが、 PHPに関しては初心者です。 よろしくお願い申し上げます。
- ベストアンサー
- PHP
お礼
早速のご回答有難うございます。 確かにHTMLのヘッダーを書く前にPHPのコードを書いていました。 ヘッダーを前に持ってきて、問題解決しました。