• 締切済み

Cookieとhtmlspecialchars

前回setcookieについて質問したのですが、どうしても出来ないのでまた質問させてください。 前回の質問↓↓ http://okwave.jp/qa/q7319771.html htmlspecialcharsを使い、form2.phpで「&」の表示は出来ましたが、form.phpではどのようにやっても出来ませんでした。 記憶されたCookieの値にhtmlspecialcharsを適用するにはどのようにすれば良いのでしょうか。 setcookie(htmlspecialchars("city", "・・・ にしてもダメでした。 また、前回教えてもらった「自分で$_COOKIEも書き替えるか、($_COOKIEでなく)$_SESSIONを使うとかの工夫が必要です。」の方は全然手付かず状態です。 出来ましたらこちらも含め、簡単でよろしいですのでソースでお願いしたいです。 お願いします。

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>記憶されたCookieの値にhtmlspecialcharsを適用する Cookieに記録するときにはhtmlspecialcharsは要りません。その値を「表示する(ブラウザにhtmlソース内の文字列として返す)」ときにhtmlspecialcharsしてください。 #マニュアルにもそう書かれているハズです http://php.net/manual/ja/function.htmlspecialchars.php それ以外の場所でhtmlspecialcharsを使ってはいけません。厳密に「ダメ」ということではありませんが、間違いの元です(複数回実行してはいけないので)。 >自分で$_COOKIEも書き替えるか、($_COOKIEでなく)$_SESSIONを使うとかの >工夫が必要です。」の方は全然手付かず状態です。 session_startしておいて、SESSION変数を使うだけでいいのですが・・・ http://www.php.net/manual/ja/session.examples.basic.php

haine_0424
質問者

補足

回答有難う御座います。 form2ですが、このように書きましたが表示されません。 (前回表示されたと言ったのは、POSTから直接表示させた場合でした) お願いします。 【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 htmlspecialchars($set_name1); echo htmlspecialchars($set1); echo htmlspecialchars($set_name2); echo htmlspecialchars($set2); ?>

すると、全ての回答が全文表示されます。

関連するQ&A