プロが教えるわが家の防犯対策術!

POSTされたかどうか確かめるために、今までは
if ($_SERVER["REQUEST_METHOD"] == "POST") {
}
と書いていましたが、別に
if (isset($_POST)) {
}
と書いても同じことでしょうか??
ちなみにPHP5.1.2です。

A 回答 (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"]))
というような感じです。

参考まで。
    • good
    • 0

試してないし、PHPのソースで確かめてもいないですが。



$_SERVER["REQUEST_METHOD"]
これはhttpのリクエストの種類。

$_POST
これはPOSTで送信されてきたデータを格納する配列。

質問者さんにとって$_POSTが空でないことが、$_SERVER["REQUEST_METHOD"]がPOSTであることと同義である処理なら同じことになるでしょうね。

まぁ実用上目から鱗なことはかけませんが、メソッドはPOSTなんだけど、$_POSTに格納されるデータが空だと同じことにはならないだろうし。

格納されるデータ(条件)は異なるので、用途的に結果的に意味は同じということもありえるし、違うこともありえるかと。
    • good
    • 0

ちがうみたいですよ。


やってみるとわかります。

<?PHP
if ($_SERVER["REQUEST_METHOD"] == "POST") print "1";
if (isset($_POST)) print "2";
?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!