• ベストアンサー

phpでcookieのセット

こんばんは。 php4 apache でプログラミングしています。 cookieをセットしようとして、マニュアル通り setcookie ("TestCookie", "Test Value"); と記述すると、 Warning: Cannot add header information - headers already sent by (output started at /url~ といったエラーが出ます。 原因に心当たりのある方はアドバイス宜しくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

それはPHPの問題でも、cookieの問題でもありません。 httpの仕様です。 httpのheaderについて検索してみてください。

chachako
質問者

お礼

こんにちは。ありがとうございます。 お礼が遅くなってしまって申し訳ありません。 教えていただいたとおり、http headerについて調べてみました。 基本的なところがわかっていなかったようです。 今までcookieなんて何も気にせず使っていたものですから・・・。 で、ではどうやってcookieをセットするか? というところがまだ解決できていませんので、新しく質問してまたお力を借りたいと思います。 気がむきましたらまた色々教えてください。 どうもありがとうございました。

その他の回答 (1)

  • kirin_f
  • ベストアンサー率51% (44/85)
回答No.1

cookieは、一番最初に出力させるようにしなくてはいけないんです。 setcookieの前にechoとかprintでなにか出力してませんか? setcookieを最初にもっていけばうまくいくと思いますよ。

chachako
質問者

お礼

こんにちは。ありがとうございます。 返事が遅れて申し訳ありませんでした。 #2の方にアドバイスいただいたようにhttp headerの仕様を調べてみましたところ、やはりcookieは本文の前に送信しなければいけないようですね。 基本的なところでつまづいてしまいました。情けないです。 しかし、まだ「ではどうしたらいいの?」ってところが解決していませんので、新しくまた質問させていただきますので、もし気が向いたらまた色々教えてください。どうもありがとうございました。

関連するQ&A

  • PHP cookie受け渡しについて

    php 5.16 apache 2.0 フォーム -------------------------------------------------------------- <form method="POST" action="./php_cookie_tm.php"> E-Mail<br> <input type="text" name="mail" value="<?php print($_COOKIE['form_email']); ?>"><br> <input type="submit" value=" 保存 "> </form> -------------------------------------------------------------- 出力 -------------------------------------------------------------- <?php setcookie("form_email",$_POST['form_email'],time()+(60*60*24*90)); ?> クッキー保存 -------------------------------------------------------------- とすると Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\○○.php:4) in ・・・・・・・ というエラーがでます。 既に発信している?みたいなエラーなのですが・・・・ なぜでるのでしょうか? php.iniの設定?等いろいろみてはいるのですが、原因不明にて すごい困っております。 初心者質問ですいません。

    • ベストアンサー
    • PHP
  • PHPエラー

    こんにちは。 初めてPHPでプログラミングをしている者です。 PHPのエラー解決方法で悩んでいます。 エラーの内容は Warning: session_start(): Cannot send session cookie - headers already sent by (output started at ~~) in ~~ Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at ~~)in ~~~ です。 お時間のある方回答お待ちしています。

    • ベストアンサー
    • 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
  • クッキーの利用

    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でクッキーをセットできない

    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 の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 そしてこの表示は、最後の時間以外はいつも同じです。 どこに問題があるのでしょうか? 詳しい方、どうか教えてください。

    • ベストアンサー
    • 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
  • cookieの保存が上手くいきません

    PHPはじめたばかりの初心者です。 PHPの勉強の過程で以下のコードを作成しました。 [cookie.php] 6: <form method="POST" action="cookie_rcv.php"> 7: 文字列: 8: <input type="text" name="test" size="30" maxlength="50" value="<?php print($_COOKIE['test']); ?>" /> 9: <input type="submit" value="送信" /> 10:</form> [cookie_rcv.php] 6: <?php setcookie("test", $_POST['test'], time()+(60*60*24*90)); ?> ブラウザで表示すると Warning: Cannot modify header information - headers already sent by (output started at /var/www/cookie_rcv.php:6) in /var/www/day02-3/cookie_rcv.php on line 6 とエラーが出てしまいます。 UTF-8で書いていたので、BOMが原因かと思い、EUC-JPに文字コードを変更してみたのですが解決しません。 もしかしたらものすごい初歩的なミスなのかもしれないのですが、何卒ご教示ください。

    • 締切済み
    • PHP
  • クッキーの削除がうまくいきません

    <?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
  • $_COOKIEについて

    はじめまして。 PHPを勉強中なのですが$_COOKIEを使った際にエラーになってしまいます。 それが何故なのか分からないのですが、この辺に詳しい方助けて下さい。 ↓↓状況は以下のとおりです。↓↓ ・開発環境:xampp、php、vista ・下記のスクリプトを記述してブラウザで表示すると、「1回目のアクセスです。」とともにエラー表示も出てきてしまう。 <?php if (isset($_COOKIE["count"])) { $count = $_COOKIE["count"] + 1; } else { $count = 1; } setcookie("count", $count); echo "${count}回目のアクセスです。"; ?> ・上記のスクリプトを実行した際のエラー表示は「 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs(ディレクトリ)php:182) in (エラーの行数) ・ちなみに、練習で作ってるだけなので同じページに、「setcookie」と「$_COOKIE」を使っている。(ただし、クッキー名などは、前に使っているのとは被らないようにしている) 以上です。 やりたい事は、ブラウザにCookieを送り、読み込むたびに「?回目のアクセスです。」の回数を増やしていきたいです。 しかし、これも出来ずに何度読み込みしても「1回目のアクセスです。」とエラー表示しかでません。 この質問で上手く伝わったかわかりませんが、ご見識ある方お力添え下さいませ。

    • ベストアンサー
    • PHP

専門家に質問してみよう