$_COOKIEについて

このQ&Aのポイント
  • PHPを勉強中なのですが$_COOKIEを使った際にエラーになってしまいます。それが何故なのか分からないのですが、この辺に詳しい方助けて下さい。
  • ブラウザにCookieを送り、読み込むたびに「?回目のアクセスです。」の回数を増やしていきたいです。
  • 上記のスクリプトを記述してブラウザで表示すると、エラー表示が出てきてしまいます。このエラーの原因や解決策に詳しい方、教えてください。
回答を見る
  • ベストアンサー

$_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
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
回答No.1

これと似てるかも。

参考URL:
http://okwave.jp/qa/q3354462.html
dainithi
質問者

お礼

あのあと、もっかいページ全体を見なおして修正したら、たった今正常にカウントされるようになりました! 原因は、セットしたクッキー名を被らないようにしていたつもりが別の所で使っていたみたいで、それを別の名前に置き換えたらしっかり動作しました! 本当にありがとうございました! プログラムって試行錯誤していく中で、頭に刷り込まれていく感じが面白いですね♪ また、何かありましたらよろしくお願いします。!

dainithi
質問者

補足

確認してみました! HTTPの制約があったんですね。 おかげ様でエラー表示はでなくなりました。 ただ、僕が記述したスクリプトでは、ブラウザを更新するたびに「?回目のアクセスです。」の数字の部分が増えていくはずなのに、表示された数字(なぜか僕のブラウザではずっと「11回目」が表示されている・・・)がずっと変わらない状態になってしまいます。 これは記述の仕方が悪いんですかねぇ?? それとも、localhostではうまくでないんですかね?? プログラムは奥が深いです。 あっ、でも参考URLありがとうございました!!

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2
dainithi
質問者

補足

あ、相互リンクありがとうございます!

関連するQ&A

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

    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()関数について 初心者なんですがわからない点があるのご返答お願いします。

    yahoo知恵袋で質問して回答も貰ったんですが その後に確認したいことがあったのですがあちらで質問の補足は200文字までという制限があったのでこちらで質問させてもらっています。 あちらでした質問が ////////////////////////////////ここからyahooでした質問///// phpの勉強をしている初心者のものですが、私の参考にしている本のsampleコードで わからない点があります。 phpの勉強をしている初心者のものですが、私の参考にしている本のsampleコードで わからない点があります。 <?php setcookie("count", true); ?> <html> <head> <title>sample<title> <body> <h2>店内のご案内</h2> <hr> <?php if(!isset($_COOKIE["count"])){ print "はじめてのおこしですね。<br />\n"; } else{ print "毎度ありがとうございます。<br />\n"; } ?> </body> </html> というコードなんですが一回目のアクセスの時にはif文のtrueが実行されて「はじめておこしですね」と 表示されて二回目以降は「毎度ありがとうございます」と表示されると本には書いているのですが 私にはsetcookieの部分で$_COOKIE["count"]にはtrueという値が与えられているからif文の条件である $_COOKIE["count"]に値がないというのはfalseでelseの文の処理がされて「毎度ありがとうございます」 と表示されるか $_COOKIE["count"]の値がtureなのでif文条件式全体がtureになり、「はじめてのおこしですね。」が 表示されるが二回目以降もその表示がされていくか のどちらかになると思うのですが、どのように考えればよいのか教えてください。 ///////////////////////ここまでyahooでした質問です。////////// と質問しそれに回答者が //////////////////////回答者が答えてくれた返答//////////////// クッキーは、ブラウザに記録され、ページにアクセスするときに自分のクッキーをサーバに渡します。 SetCookieの段階では、このクッキーはまだ有効ではありません。 SetCookie()関数はSet-Cookie:ではじまるHTTPヘッダを作ってブラウザに渡すべきクッキーを書き出すだけなのです。 順番としては、 ブラウザがページを読み出す→サーバはクッキーを添えて文書をブラウザに渡す→ブラウザはクッキーを受け取って記録する→ ブラウザが先程受け取ったクッキーを添えてページを読み出す→サーバは受け取ったクッキーがあるのでif(!isset($_COOKIE["count"]))がfalseになり「毎度ありがとうございます。」と表示する。 /////////////////////ここまで回答者の返答/////////////// と答えてくださったんですがその後に聞きたいことがあったのですが 上で書いたとおり制限があったので質問できなかったのでその質問を ここから下に書くのでよければご返答お願いします。 /////////////////////ここから答えてもらいたい質問////////// 自分なりに教えてもらったことを解釈してみたんですが、 一度目のアクセスでは、まずブラウザがページをサーバーに要求しそれに対してサーバーがページとクッキーを渡すが、 このときのブラウザに渡すページは、ブラウザからはクッキーをもらっていないのでクッキーの処理がしていないページになる。 なので一回目のif(!isse($_COOKIE["count"]))は$_COOKIEの値を定義されたページは貰っておらず値がないのでtrueとなり 一回目はサーバーからクッキー受け取ったクッキーを記録するだけにとどまる。 そして二度目のアクセスでは、ページの要求と一度目のアクセスで受け取ったクッキーをサーバーに渡すので、 サーバーは今回はクッキーの処理をしたページをブラウザに渡すのでif(!isset($_COOKIE["count"]))は$_COOKIEの値を定義されたページを貰っているのでflaseとなり 「毎度ありがとうございます」と表示される。 このようにわたしなりに解釈したんですがこのように考えてもよいでしょうか? もしよろしければ見づらい文なんですがお返事お願いします。

    • ベストアンサー
    • 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
  • エラー Warning: Cannot modify header information

    10日で覚えるPHP入門教室の本を買ってPHPを学習中の初心者です。 この本のサンプル例題でクッキーを使って初回入力データを2目のアクセスでも表示するコードがあるのですが、どうしても Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\php10\day02-3\cookie_rec.php:6) in C:\xampp\htdocs\php10\day02-3\cookie_rec.php on line 6 のエラーがでます。 下記がそのサンプルコードズバリです。 -----cookie.php------- <html> <head> <title>クッキーでデータを記録する</title> </head> <body> <form method="POST" action="cookie_rec.php"> E-Mailアドレス: <input type="text" name="email" size="30" maxlength="50" value="<?php print($_COOKIE['email']); ?>" /> <input type="submit" value="送信" /> </form> </body> </html> ------cookie_rec.php------- <html> <head> <title>クッキーでデータを記録する</title> </head> <body> <?php setcookie("email",$_POST['email'],time()+(60*60*24*90)); ?> クッキー"email"を保存しました。 </body> </html> cookie.phpでメルアドを送信するとcookie_rec.phpでクッキーにセットして次回cookie.phpを開けたらメルアドが既にinputboxに入力した状態になるはずですが、どうしてcookie.phpの送信ボタンを押すと上記のエラー表示となります。 なにが原因しているのでしょうか? お解りになる方、宜しくお願い致します。 環境はXAMPP Windows Version 1.6.3aのローカルでOSはXPです。

    • ベストアンサー
    • PHP
  • Cookieの設定について

    PHPでCookieにデータを設定しているのですが以下のエラーメッセージが出て 正常に設定できません何か悪いのでしょうか? よろしくお願いします。 ○エラーメッセージ Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\index.php:59) in C:\xampp\htdocs\index.php on line 340 Cokkie NG ○ソースの関連部分 index.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>SAMPLE </title> <meta http-equiv="Pragma" content="No-Cashe" /> <meta http-equiv="Cache-Control" content="No-Cache" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <link type="text/css" rel="stylesheet" href="search.css" /> <?php $r = setcookie('win_width','800',time()+3600,"/"); if ($r) { echo'<p>Cokkie OK</p>'; } else { echo'<p>Cokkie NG</p>'; } ?> </body> <HEAD> <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> </HEAD> </html>

    • ベストアンサー
    • PHP
  • 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
  • cookie が有効がどうか判断させたいのですが・・・

    HPを見ているブラウザーが cookie が有効かどうか しらべたいのですが、よくある cookie の書き込みと 読み出しのサンプルを使って以下のようなスクリプトを 考えました。 $cookie_flg = 1; print &setCookie("CHECK", $cookie_flg); # Cookie の値を得る &getCookie(); $cookie_flg = $COOKIE{'CHECK'}; if ($cookie_flg eq '') { $cookie_flg = 0; # Cookie が使えない } return $cookie_flg; ・・・これでわかるでしょうか? ブラウザーでは実際に、cookie が使える状態 なのですが、アクセス最初の1回目は 0 が返って くるのです。 ( 2回目以降は 1 が返ってきて望みどおりです ) ひょっとして、cookie の仕様として、書き込んで から、すぐに読み出そうとしても、読めないもの のでしょうか? それとも、cookie を書き込んだあと、一旦、 print "Content-type: text/html\n\n"; で閉めてから、読み出さないといけないとか??? こんなんで、何日もうんうん考え込んでます。 ベテランの方には、あまりに馬鹿馬鹿しい問題 なのかもしれませんが・・・

    • ベストアンサー
    • Perl
  • COOKIEを用いたセッション管理について

    input.phpでsetcookieを使ってcokkieを設定します。 有効期限は1時間です。 check.php→thanks.phpという流れで登録を行い、thanks.phpでcookieを破棄します。 リロードを行ったときにCOOKIEがないのでエラー処理が行われます。 check.phpに直接アクセスしたときもcookieがない場合はエラー処理を行います。 ここまではいいのですが、input.phpにアクセスしたときにthanks.phpで破棄したcookieがまだ生きているのです。 ここで新たにcookieを発行して新しいsessionを開始したいのですが、うまくいきません。 どのようにしたらいいのでしょうか? 1時間たたないうちにユーザが登録をしようとするとcookieの情報を元に更新されてしまいます。

    • ベストアンサー
    • PHP