• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPにおけるCookieの挙動について。)

PHPにおけるCookieの挙動について

duronの回答

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.1

調べてみたところクッキー名にはピリオドやスペースを使わないほうがよいみたいです。 Outでセットされた後に$_COOKIEの中身を出力してみたところ "TestCookieVariable_COOKIE_NAME"という名前でセットされてました。 仕様的なものは残念ながら見つけられませんでした。 どなたかがフォローしていただけるとありがたいです。

outerlet
質問者

お礼

ピリオドをアンダースコアに変えたところ、期待通り動作してくれました。 本当に助かりました。迅速に回答下さって、大変助かりました。 ピリオドはうまく認識しないんですね…。クッキーのキーには使えない、禁止文字などあるのでしょうか。 もし仕様的な情報をお持ちの方いらっしゃいましたら、フォロー頂けると幸いです。 取り急ぎお礼まで。本当にありがとうございました!

outerlet
質問者

補足

技術的な内容はNo.2様やNo.3様が教えて下さいましたが、考えた結果、やはり困っている時に迅速な回答を下さったNo.1様の回答をベストアンサーとさせて頂きます。 皆様、ありがとうございました。

関連するQ&A

  • 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
  • PHP入門の本を買って勉強しているのですが・・・

    この前、10日間で覚えるPHP5入門教室という本を買い、勉強していたのですがクッキー関連のところでつまりました。 ・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> 本通りに上記のコードをうってみたのですがクッキーが保存されないのです。本によると1回目にe-mailを送信すると二回目に自動的にcookie.phpのテキストボックスに表示されると書いてあったのですがそれが表示されないのです。一応、本についてるCDに入っているサンプルデータのやつを使ってやっても同じ結果になりました。 それと恐縮ですがPHPをわかりやすく解説していただいているサイトがあれば教えてください。

    • ベストアンサー
    • 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
  • クッキー認証>クッキー削除ができない!!

    今回は、クッキー認証画面を作成している際、 エラーが出てしまって先に進めず投稿しました。 下記にプログラム記載 ----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のクッキー情報を活用したい

    PHPのクッキー情報を活用したい 現在入門書で勉強中、例のとおりに打ち込んだつもりなのですが、プログラムがうまく動きません。アドバイスお願いします。使用OSはwindows7、ブラウザはfirefox3.6.11です。apatcheは2.2で、PHPは5.2.14です。 プログラムは以下のとおりです。 (1)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> (2)cookie_rec.php <html> <head> <title>クッキーでデータを記録する</title> </head> <body> <?php setcookie("email",$_POST['email'],time()+(60*60*24*90)); ?> クッキー"email"を保存しました。 </body> </html> これを動かして、一枚目はうまく出るのですが、2枚目には Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php10\day02-3\cookie_rec.php:6) in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php10\day02-3\cookie_rec.php on line 6 とエラーが出ます。cookie_rec.phpの6行目はしっかり確認しました。他のところも確認しましたが、なぜエラーなのかわかりません。どこが悪いのでしょうか?

    • ベストアンサー
    • PHP
  • PHPについて

    PHPについて。 現在このような形でパスワードを作っております <html> <head> <title>form</title> </head> <body> パスワードを入力してください。 <form name="form" action="./sample04.php" method="POST"> <input name="pass" type="text"> <input type="submit" value="ログイン"> </form> </body> </html> ↑HTMLの文面↑ <?php // パスワードを設定する。 $pass = 1234; // form.htmlからのパスワードを受け取る $form_pass = $_REQUEST["pass"]; ?> <html> <head> <title></title> </head> <body> <?php // form.htmlからの値が$form_passと等しいか評価する if($form_pass == $pass){ echo "ログイン成功<br>", "<a href=\"./top.html\">進む</a>"; }else{ echo "ログイン失敗<br>", "<a href=\"./index.html\">戻る</a>";} ?> </body> </html> 質問はパスワードを複数作りたいのですが・・・ どうすればいいですか?PHPにはあまり詳しくないので・・・

    • 締切済み
    • PHP
  • 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の初心者なのですが、Cookieでうまく情報の引き渡しができないので、アドバイス頂けないでしょうか? test1でCookieを初期設定した後に、Cookieを使ってtest2を呼び出し、 test2上で設定し直した値でCookieを書き変えてtest2を再呼び出ししています。 再呼び出しした時のCookieが読めないので、ブラウザを調べてみると、yyという名前のクッキーが2つ存在しているためだと判りました。値は確かに置き変わっているのですが、パスが違っているので読み出せないようです。 初期設定した時のパスは /tst/  → test1.phpでsetcookieで設定したもの 再設定した時のパスは /  → test2.phpの中のJavascriptで設定したもの になっていました。 ▽test1.php (/svr1/tst/) setcookie("yy",$yy,0,"./"); (略) header("HTTP/1.1 301 Moved Permanently"); header("Location: test2.php"); ▽test2.php function set_Cookie() { yy = parseInt(document.f1.ck_yy.value); document.cookie = "yy=" + yy + "; path=/"; return true; } <php? $yy = $_COOKIE['yy']; ?> <form name="f1" action="test2.php" method="post"> <input name="yy">  <input type="submit" value="実行" onClick="set_Cookie()">   </form> setcookie の引数であるパス名を最初は省略していたのですが、/tst/というパスが入ってきてしまうため、パス名をあえて ./としてみたのですが結果は同じでした。 ちなみにtest1の呼び出し元は別のサーバーで以下のように呼びだしています。 ▽test0.html (/svr0/wwwroot/) <a href="http://svr1/tst/test1.php">test1</a> パス名はどのように決まるのでしょうか?

    • ベストアンサー
    • PHP
  • PHPで投票カウンタの作成

    PHPで投票カウンタを作成したいと思います。 構造としてはラジオボタンが3つ並んでいて、そのどれかを選び 下にあるOK(ひとつだけ)ボタンをクリックすると、ラジオボタンの横に数値がカウントされるという簡易的なものです。 下記のコードに足りないところやいらないところを教えてください。 ド素人のためご教授願います。 <?php if(isset($_COOKIE["tohyo"])){ $tohyo = $_COOKIE["tohyo"]; $tohyo++; }else{ $tohyo = 0; } setcookie("tohyo", $tohyo, time()+60); ?> <html> <head> <title>投票カウンター</title> </head> <body> <form action="count2.php"> <p> <input type="radio" name="tohyo" value="1"><?php print $value["$kekka"][1]; ?><br> <input type="radio" name="tohyo" value="2"><?php print $value["$kekka"][2]; ?><br> <input type="radio" name="tohyo" value="3"><?php print $value["$kekka"][3]; ?> </p> <input name="submit" type="submit" value="投票"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PHPのデータやり取りについて

    自分はPHPを独学している学生です。 ちなみにPHP歴3日です。。。 先日[改訂3版 基礎PHP]という教本を購入してPHPの勉強を始めたのですが、 何度教本の通りに試してもうまく動作しないスクリプトがありまして、 内容としてはHTMLファイルの入力フォームでデータを受け取り、phpファイルに受け渡して表示するだけの簡単なものなのですが、なぜかphpによる画面が表示される際に入力したものが表示されないという症状になっています。 ブラウザが原因かと思い、IEとFirefoxで試したのですがどちらも同じ症状でした。 原因がわかる方に教えていただけないかと思っております。 コードは以下の通りです。 welcome.html <html> <head><title>welcome.html</title></head> <body> どちら様ですか?<br /> <form action="welcome.php" method="POST"> <input type="text" name="name"> <input type="submit" value="送信"> </form> </body> </html> welcome.php <html> <head><title>welcome.php</title></head> <body> ようこそ <?php $name = $_POST['name']; print (htmlspecialchars($name, ENT_QUOTES,'UTF-8')); ?> さん </body> </html>

    • 締切済み
    • PHP