• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GETとクッキーの併用)

GETとクッキーの併用方法について

このQ&Aのポイント
  • php初心者です。GETとクッキーを併用して、訪問する場所によって表示するコンテンツを切り替えるプログラムを作成しています。訪問した以降もクッキーに保存した引数を使用したいのですが、リンクの引数がないページに移動するとクッキーが削除されてしまいます。どのようにすればうまくクッキーを保持できるでしょうか。
  • 訪問する場所によって表示するコンテンツを切り替えるプログラムを作成していますが、クッキーを使用して保存した引数が削除されてしまいます。GET変数では静的な文字列ではなく、受け取った変数を使用する必要があります。どのようにすればクッキーを保持できるでしょうか。
  • GETとクッキーを併用してコンテンツを切り替えるプログラムを作成していますが、リンクの引数がないページに移動するとクッキーが削除されてしまいます。静的な文字列ではなく、GET変数を使用したいのですが、どのようにすればクッキーを保持できるでしょうか。

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

  • ベストアンサー
  • racchoman
  • ベストアンサー率71% (20/28)
回答No.3

(1) >のようにしているのですが、 >こうすれば問題ありませんでしょうか?? 問題ないと思います。 (2) >値のチェックというのは >具体的にどのようにしたらよいのでしょうか。 >ご指摘いただいているのは、URLを直接いじくられておかしな >引数をいれられても大丈夫なようにするということなのですか? URLについているpidの値か、cookieのpidの値を、悪意あるユーザが操作した場合に危険だということです。 if ($_COOKIE["pid"] == ""){ $pid = $_GET["pid"] } else { $pid = $_COOKIE["pid"] } // pidの値をチェックしてOKだったらincludeする // 以下はチェック方法の一例です。 if (preg_match("/^[a-zA-Z0-9]+$/D", $pid)) { include($path.$pid.$html); }

trfnc223
質問者

お礼

ありがとうございました! 今回は引数が特定できるので、それ以外できたときはfalseになるようにしたいと思います。

その他の回答 (2)

  • racchoman
  • ベストアンサー率71% (20/28)
回答No.2

ご質問の本題とは違うと思いますが、気付いた点を。 (1) Cookieがセットされていない状態で、 index.html?key=***** にアクセスすると、 include($path.$_COOKIE["key"].$html); のところでエラーになりませんか? (2) include($path.$_COOKIE["key"].$html); では、 Cookieに、"../../../../etc/passwd\0" などを入れられる可能性があります。$_COOKIE["key"] の値のチェックが必要です。 差し出がましいようですが、参考まで・・・。

trfnc223
質問者

お礼

わざわざありがとうございます。 (1)に関してですが、 <?php $html = ".html"; $path = "common/template/"; if ($_COOKIE["pid"] == ""){ include($path.$_GET["pid"].$html); }else{ include($path.$_COOKIE["pid"].$html); } ?> のようにしているのですが、 こうすれば問題ありませんでしょうか?? (2)に関してですが、値のチェックというのは 具体的にどのようにしたらよいのでしょうか。 ご指摘いただいているのは、URLを直接いじくられておかしな 引数をいれられても大丈夫なようにするということなのですか?

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

if ( isset($_GET["key"]) ){  $value = $_GET["key"];  setcookie("key", $value); } GETにKeyがある時だけ クッキーをセットします GETにKeyが無い時、クッキーをセット(上書き)せずに 読み込むだけにします。

trfnc223
質問者

お礼

ご回答ありがとうございます! 教えいていただいたものだとエラーになってしまったんですが、 考え方はわかりましたので、下記のようにやってみたらできました! <?php if ($_COOKIE["key"] == ""){ $value = $_GET["key"]; setcookie("key", $value); } ?> ありがとうございました!!

関連するQ&A