• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:$_POSTのものを$_GETとして使うのはなぜ?)

なぜ$_POSTのものを$_GETとして使うのか?

このQ&Aのポイント
  • なぜ$_POSTのものを$_GETとして使うのか? schedule_edit.phpのサンプルではPOSTでなくGETで渡されている。
  • フォームデータはhtmlspecialchars($year, ENT_QUOTES)の$yearに格納され、$_POST["year"]としてデータが渡り、php側で$year = $_POST["year"]のように$_POST["year"]のデータが$yearに格納し直されている。
  • $_GET["year"]はschedule_edit.phpの$_POST["year"]を見ておらず、それぞれ別のデータとして処理されている。

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

  • ベストアンサー
  • bx2
  • ベストアンサー率47% (97/206)
回答No.2

> print("<td><a href=\"schedule_list.php?year=" .$year ・・・ schedule_list.phpにはGETパラメータで渡しているから、$_GET["year"]です。 > <form action="schedule_edit.php" method="post"> > <input type="text" name="year" ・・・ schedule_edit.phpにはPOSTパラメータで渡しているから、$_POST["year"]です。 >この$_GET["year"]はschedule_edit.phpの$_POST["year"]を見ているわけではないのでしょうか。 違います。schedule_edit.php と schedule_list.php は別々のプログラムです。

kiseki777
質問者

お礼

schedule_list.phpで使われているGETはschedule_calendar.phpから渡されたデータで、 POSTはschedule_edit.phpだけで使われているデータ。 同じ変数名でもまったく違うデータということが分かりました。 ありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

元ソースは見ていませんが、可能性としてデータを引き継ぐ際に POSTはサブミットする必要がありますが、GETならアンカーでも渡せます そのあたりが運用面でGETの方が利便性が高いってことじゃないですかねぇ (ただ長くなるとGETはブラウザの制限に引っ掛かったりしますが・・・) いずれにしろデータの遷移にはセッションで処理すれば解決するので あまり気にする必要はありません

kiseki777
質問者

お礼

ありがとうございます。 >データの遷移にはセッションで処理すれば解決する セッションで処理をするというのはどういう意味でしょうか? $_SESSIONはサーバーに送信され保存されたデータを使うための変数なので、 GETやPOSTで保存されたデータを使うこともできるということかもと思い試してみました。 ------ a.php ------- <?php if(isset($_GET["gettest"])){ header("Location: b.php"); } ?> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>a.php</title> </head> <body> <form action="b.php" method="get"> <input type="submit" name="gettest" value="jikkou"> </form> </body> </html> ------ b.php ------- <?php $session_start(); //Notice: Undefined variable: session_start echo $_SESSION["gettest"]; //Fatal error: Function name must be a string ?> ***調べたこと*** >POSTはサブミットする必要があります <input type="submit">など用意された専用の方法を使わなければデータを送れない。 >GETならアンカーでも渡せます <a href="../test/index.html?name1=value1&name2=value2"> ?以降がクエリストリングス 必ず 名前=値の書式で、パラメータを複数指定するときは&を使う。 echo $_GET['name1']; //value1 echo $_GET['name2']; //value2 のように使える

関連するQ&A