• 締切済み

クッキーについて質問が御座います

phpのクッキーについての質問です。 皆様どうぞよろしくお願い致します。 phpでのクッキーを利用したプログラムを始めて 作成しようと思っているのですが、 /* test1.php */ <form method="POST" action="cookieTest.php"> <input type="text" name="id" /> <input type="submit" value="送信" /> </form> /* cookieTest.php */ $id = $_POST['id']; setcookie("cookieId",$id, time() + 7200); // クッキーのセット echo $_COOKIE["cookieId"]; 上記のようにtest1.phpからフォームにてcookieTest.phpへPOSTにて「aaaaa」という文字を送信した場合にcookieTest.phpにて、 echoにてクッキーが表示できません。 その後ブラウザの更新ボタンを1度押すと「aaaaa」が表示されるようになります。 更新を押さなければクッキー内容が表示されないのはどのような原因が考えられますでしょうか?どうぞ皆様よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

$_COOKIEにはブラウザから送られたクッキー情報が入るのでその動作で正常です。 1回目 ブラウザがサーバへリクエスト PHPが$_COOKIEをセットするが1回目でクッキーは空なのでセットされない cookieTest.phpを実行 setcookie()でブラウザへSet-cookieヘッダを送信 echo $_COOKIEするが当然$_COOKIEはまだ空のまま ブラウザがクッキーを受け取る 2回目 ブラウザがサーバへリクエスト PHPが$_COOKIEをセットする。2回目でクッキーが存在するので値がセットされる

singo333333
質問者

お礼

ご回答ありがとうございます。 そういえばクッキーはクライアント側のパソコンにて 保存される物でしたね。 cookieTest.phpの処理が終わった後に クライアント側のヘッダか何かでクッキーに登録されるので 2回目からのcookieTest.php処理の時にクライアントのPCにて前回登録された クッキー内容がecho $_COOKIEされるという理解でよろしいでしょうか。 ご回答本当にありがとうございました。

関連するQ&A

  • PHPでのクッキー

    PHPでクッキーを使い、下記のような入力フォームを作りました。 form.phpで入力→form2.phpで正常出力出来るのですが、 直接form2.phpへ飛ぶと、クッキーの値がなくなってしまいます。 setcokkieが、何の値もないのを上書きしていることは理解できるのですが、これを上書きせず回避?する方法はありますでしょうか? よろしくお願いします。 【form.php】 <?PHP parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); ?> <html> <form method="post" action="form2.php"> <?PHP echo "名前1<input type=text name=name1 maxlength=16 size=12 value=$set_name1> <BR>ID<input type=text name=p1 maxlength=8 size=6 value=$set1><BR><BR>"; echo "名前2<input type=text name=name2 maxlength=16 size=12 value=$set_name2> <BR>ID<input type=text name=p2 maxlength=8 size=6 value=$set2>"; ?> <input type="submit" value="実行"> </form> </html> 【form2.php】 <?php $city1 = $_POST["p1"]; $city2 = $_POST["p2"]; $city_name1 = $_POST["name1"]; $city_name2 = $_POST["name2"]; setcookie ("city", "set1=$city1&set2=$city2",time()+3600*24*90); setcookie ("city_name", "set_name1=$city_name1&set_name2=$city_name2",time()+3600*24*90); parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); echo $set_name1; echo $set1; echo $set_name2; echo $set2; ?>

    • ベストアンサー
    • PHP
  • PHPでのCookie

    PHPでクッキーを使い、下記のような入力フォームを作りました。 form.phpで入力→form2.phpで正常出力出来るのですが、 form2.phpで一度更新しないと、結果が画面に表示されません。 これをform2.phpを開いた時点で表示されるようにするには、どのように書けばいいのでしょう。 後1つあります。form.phpで 「テスト&1」と書くと「テスト」としか表示されなく、&とそれ以降が記憶されません。 これはなぜでしょうか? お願いします。 【form.php】 <?PHP parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); ?> <html> <form method="post" action="form2.php"> <?PHP echo "名前1<input type=text name=name1 maxlength=16 size=12 value=$set_name1> <BR>ID<input type=text name=p1 maxlength=8 size=6 value=$set1><BR><BR>"; echo "名前2<input type=text name=name2 maxlength=16 size=12 value=$set_name2> <BR>ID<input type=text name=p2 maxlength=8 size=6 value=$set2>"; ?> <input type="submit" value="実行"> </form> </html> 【form2.php】 <?php if ($_POST) { $city1 = $_POST["p1"]; $city2 = $_POST["p2"]; $city_name1 = $_POST["name1"]; $city_name2 = $_POST["name2"]; setcookie ("city", "set1=$city1&set2=$city2",time()+3600*24*90); setcookie ("city_name", "set_name1=$city_name1&set_name2=$city_name2",time()+3600*24*90); } parse_str($_COOKIE["city"]); parse_str($_COOKIE["city_name"]); echo $set_name1; echo $set1; echo $set_name2; echo $set2; ?>

    • ベストアンサー
    • PHP
  • クッキー認証>クッキー削除ができない!!

    今回は、クッキー認証画面を作成している際、 エラーが出てしまって先に進めず投稿しました。 下記にプログラム記載 ----H_01.html---------------------------------- <html> <head> <title>クッキー認証</title> </head> <body> <center> <form method="POST" action="H_02.php"> 名前<input type="text" name="name"> パスワード<input type="Password" name="pass"> cookieを記録する<input type="checkbox" name="chk"> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form> </center> </body> </html> ------------------------------------------------ -----H_02.php---------------------------------- <?php $name = $_COOKIE['name']; $pass = $_COOKIE['pass']; $cnt = $_COOKIE['chk']; if ($cnt == True) { $lim = time()+7*24*60*60; //有効期限1週間 setcookie('name',$name,$lim); setcookie('pass',$pass,$lim); } else { setcookie('name'); setcookie('pass'); } ?> ------------------------------------------------ else文内の、setcookie二行にエラーが出ます。 htmlでチェックボックスにチェックが施されていない場合、クッキーを削除。 調べてみたのですが、どうしたらよいのかわからず 投稿しました。よろしくお願いします。

    • ベストアンサー
    • PHP
  • クッキーが保存されずに困っています

    どなたか、詳しい方がおりましたらアドバイスをお願い いたします。私はプログラムを仕事としている者では ありませんが、独学でPHPを勉強しております。 クッキーが保存されなくて困っています。 以下の部分です。 クッキーの有効期間は設定していませんが、ブラウザを 閉じずにテストしていての情況です。 ---------------------------------------------------- ファイル名:rogin.php <?php setcookie("userck","ckdata=100"); print $_COOKIE[userck]; ?> <html> <body> <br><br><br> <center> <table border="1"> <form method="post" action="<?=*********"> <tr> <td> Email: </td> <td><input type="text" name="data1" size="30"> </td> </tr> <tr> <td> pass: </td> <td><input type="text" name="data2" size="30"> </td> <tr> <td colspan="2" align="center"> <input type="submit" name="sousin" value="送信"> </td> </tr> </form> </center> </body> </html> ---------------------------------------------------- どうしてクッキーが保存されないのか自分なりにいろいろと 調べたり、テストをしてみたりしました。 テストの内容 test1.php <?php setcookie("userck","ckdata=100"); ?> test2.php <?php print $_COOKIE[userck]; ?> 上の2つのファイルを作成して、test2.phpで出力してくるか どうかを試してみますと、問題なく「data=10」が出力されて きます。(保存されているかどうかだけを調べたいので、 parse_strは省略しています。) ところが、問題のrogin.phpでクッキーを保存して別のファイル で$_COOKIE[userck]を取得しようとしてもどうやら保存されて いないようです。 rogin.phpの内部に記載した、print $_COOKIE[userck];では ckdata=100は出力してきます。 それではと思い、test1.phpでセットしたクッキーはrogin.phpで 取得できるのかどうかをテストしてみますと、無事に取得できます。 setcookie()の前にはHTMLの出力はありません。 クッキー名にアンダーバーも使っていません。 何か、php.iniに関係するのかと思い、一応iniファイルに output_buffering = On を書き足したりもしました。 クッキーが保存されない原因で、考えられることはどんなこと なのかが知りたいです。 どなたか、お分かりになる方アドバイスをお願いできないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP foreachのループの中でPOST送信

    現在掲示板を作っています。 <?php foreach ($result as $record){ $id = $record ["id"]; $title = $record ["title"]; ?> <form method="post" name="form1" action="contents.php"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <a href="javascript:form1.submit()" ><?php echo $title; ?></a> </form> <?php } $dbInfo = null; ?> </form> テーブルのidとtitleをすべて取り出しています。 titleを一覧表示で全件表示させリンクを貼り、移動先にidをPOSTで送信し投稿内容がみられるようにしたいのですが、リンクを貼れても飛べなかったり、移動できてもなにも送信していない状態(ただ移動しただけ)だったり。 2つ目のphp直後の「}」を1つ目の中で閉じるとPOST送信しつつ移動できるのですが、1件しか表示されなくなってしまいます。 <form method="POST" name="con-id"> <input type="hidden" name="id" value="<?php echo $id; ?>"> <a href='contents.php'><?php echo $title; ?></a> </form> などもしてみましたが、POST送信はされませんでした。 なにか方法はありませんでしょうか? ここをこうした方がいい、など教えて頂きたいです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • クッキーがよくわかりません

    クッキーの利用の仕方が不明です。 ↓以下のようなプログラムを↓をコピペしてきたのですが、よくわかりません…$data=$_COOKIE["data"];の部分でエラー発生します。 どういうことでしょうか? http://w1.nirai.ne.jp/freeze/main/files/10_01_cookie.html <?php       //クッキーは<html>よりも先に記述する $data=$_COOKIE["data"];     //まずクッキーを読み出す  if(!isset($data)){       //何もデータが無ければ   $data = $_POST['data'];   //postで受け取ったデータを  }else{             //クッキーデータがあれば   $data = $data."<br>".$_POST['data'];    //前のデータに新しいデータをくっつける  } setcookie("data", $data, time()+60*10);    //そしてそのデータを60秒×10つまり10分間記憶する ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Style-Type" content="text/css"> <title>クッキーで、すぐ消える一行メモ</title> </head> <body> クッキーで、すぐ消える一行メモ<br> 文章を入力して表示クリックを、何度か繰り返してください。10分で消えます。<br> <form action="10_01_cookie.php" method="post"> <input type="text" name="data" size="50"> <input type="submit" value="表示!"> </form> <!--ここからPHPが始まります。--> <?php echo $data;    //入力された文を改行をはさんで記憶しているので、それを記述する ?> <!--これでPHPは終わりです。--> </body> </html>

    • ベストアンサー
    • PHP
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • フォームの内容をクッキーに保存する

    IDをフォームに記入してクッキーに保存し、別ページで使用しようとしています。 フォームに入力してsubmit(onclickでCookieに保存)しようとすると、 1回遅れでCookieに保存されます。 (前々回保存した内容がCookieに保存される) POSTを変数に入れる順番がおかしいのでしょうか? ご教示お願い致します。 以下ソースです。 setid.php <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript"> <!-- // Cookie設定 // Cookie送信function function setCookie(key,val,url){ tmp = key+"="+escape(val)+";"; tmp += "expires=Fri, 31-Dec-2030 23:59:59;"; if(url){ tmp += "domain="+getDomain(url)+";"; tmp += "path="+getDomainPath(url)+";"; } document.cookie = tmp; location.reload(true); }; // Cookie削除function function delCookie(key){ expiredate = new Date(); expiredate.setYear(expiredate.getYear()-1); tmp = key+"=;"; tmp += "expires="+expiredate.toGMTString(); document.cookie = tmp; }; // Cookie削除(削除ボタン用) function del_cookie_id(){ delCookie("testid"); location.reload(true); } //--> </script> </head> <body> <center> <!-- ID入力フォーム --> <?php // Cookie読込み-ID $testid=$_COOKIE["testid"]; ?> <form action="setid.php" method="post"> <input type="text" name="testid" size="20" value="<?php echo $testid; ?>"> <!-- ID保存ボタン --> <?php $testid=$_POST["testid"]; ?> <input type="submit" name="set_id" value="IDを保存" onclick="setCookie('testid','<?php echo $testid; ?>');"> <!-- ID削除ボタン --> <input type="submit" name="del_id" value="IDを削除" onclick="del_cookie_id()"> </form> <br> <!-- Cookie表示 --> <?php print_r($_COOKIE); ?> <br> </body> </html>

    • ベストアンサー
    • PHP
  • 値が渡りません。

    すごく初歩的な質問ですみません。 以下の2ソースでpostで値が渡りません。 いろいろ調べましたがわかりません。 宜しくご教授いただけるとたすかります。 【test_dev.php】 <h1><Font Color = "red">ホームページ</Font></h1><br> <br> <form action="test_dev02.php" metod="post" enctype="application/x-www-form-urlencoded"> ID:<input type="text" name="id" size="10" value="" > pass:<input type="text" name="pass" size="10" value="" > <input type="submit" value="送信"><br> </form><br> What's new<br> 【test_dec02.php】 <?php $ID="test-use"; $pass="test-dev"; $ID2=$_POST["id"]; $pass2=$_POST["pass"]; print "IDは ".$ID2."です。パスワードは ".$_POST["pass"]."です。"; print $ID2; echo $_POST["pass"]; ?> ユーザー認証プログラム

    • ベストアンサー
    • PHP
  • チェックボックスの初期選択と選択保持

    複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <html> <body> <form name="form" method="post"> <?php test1() ?> test1 <?php test2() ?> test2 <?php test3() ?> test3<br><br> <input type="submit" name="button" value="button"> </form> <?php function test1(){ if ($_POST['test1']){ echo "<input type=\"checkbox\" name=\"test1\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test1\">"; } } function test2(){ if ($_POST['test2']){ echo "<input type=\"checkbox\" name=\"test2\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test2\">"; } } function test3(){ if ($_POST['test3']){ echo "<input type=\"checkbox\" name=\"test3\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test3\">"; } } ?> </body> </html>

    • 締切済み
    • PHP

専門家に質問してみよう