- ベストアンサー
POSTされたかどうか確かめる方法で…
POSTされたかどうか確かめるために、今までは if ($_SERVER["REQUEST_METHOD"] == "POST") { } と書いていましたが、別に if (isset($_POST)) { } と書いても同じことでしょうか?? ちなみにPHP5.1.2です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1さんの指摘通り、やってみるのが一番ですよ。 聞くより確実、その場で分かりますので。 if(isset($_POST)) では駄目です。$_POSTにはGETでアクセスしても空の値が入っています。var_dump($_POST)とすると、array(0) { } という値を返します。 issetは値があるかどうかだけを判断するのですが、$_GETや$_POSTは最初から定義されていますので、TRUEを返すのです。 例えば<input type="text" name="a" />の様な変数名を指定した場合には、POSTで送信されて来た場合は$_POST["a"] に入りますのでそれを判断すればPOST値が渡されたかどうかを判断出来ます。即ち、 if(isset($_POST["a"])) というような感じです。 参考まで。
その他の回答 (2)
- kalze
- ベストアンサー率47% (522/1092)
試してないし、PHPのソースで確かめてもいないですが。 $_SERVER["REQUEST_METHOD"] これはhttpのリクエストの種類。 $_POST これはPOSTで送信されてきたデータを格納する配列。 質問者さんにとって$_POSTが空でないことが、$_SERVER["REQUEST_METHOD"]がPOSTであることと同義である処理なら同じことになるでしょうね。 まぁ実用上目から鱗なことはかけませんが、メソッドはPOSTなんだけど、$_POSTに格納されるデータが空だと同じことにはならないだろうし。 格納されるデータ(条件)は異なるので、用途的に結果的に意味は同じということもありえるし、違うこともありえるかと。
- yambejp
- ベストアンサー率51% (3827/7415)
ちがうみたいですよ。 やってみるとわかります。 <?PHP if ($_SERVER["REQUEST_METHOD"] == "POST") print "1"; if (isset($_POST)) print "2"; ?>