2010-11-22 158 views
14

リクエストがPHPでポストバックされているかどうかを確認するにはどうすればよいですか? submit<input type="submit" />リクエストがPHPでポストバックされているかどうかを調べる

+0

を役に立てば幸い

あなたが現在 'POST'データがあるかどうかをチェックしますか、または' submit'データが存在する場合は? – Ben

+0

投稿や投稿を確認していますか?ポストバックは、ポストリクエストの特定のタイプです。 –

+0

@Steve、@Lèsemajesté、基本的に、私はちょうどフォームがポストバックなので、私はポストバックを処理したいと思っています –

答えて

22

これは、同じページにこのような送信ボタンがあるとわかっている場合に機能します。

あなたはすぐに別の方法は、リクエストメソッドをチェックすることです、リクエスト変数について何も知らない場合は、次の

if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') 

としては、特にpostbackだけでなく、任意のを確認するために、コメントで指摘POSTリクエストでは、参照元が処理ページと同じページであることを確認する必要があります。このようなもの:

if (basename($_SERVER['HTTP_REFERER']) == $_SERVER['SCRIPT_NAME']) 
+1

'=='の代わりに '==='を使うべきです。説明、理由は、[この回答](http://stackoverflow.com/a/1372163/1469208)のコメントやその他の多くのリソースにあります。これはPHPプログラミングの基本であるためです。 – trejder

3

nameある

if (isset($_POST["submit"])) 

あなたが$_SERVER['REQUEST_METHOD'] == 'POST'をしたいです。

あなたの質問は一般的ではありませんが、this oneと非常によく似ています。

これはおそらく実際にポスト変数をチェックするよりも良いアプローチです。 1つは、その変数が送信されるかどうかはわかりません。私は値が指定されていない場合、いくつかのブラウザがキーをまったく送信しないことに気をつけます。また、POSTされた値がない場合、PHPのいくつかのフレーバーで$_POSTが定義されないことがあります。

+0

'=='の代わりに '==='を使うべきです。説明、理由は、[この回答](http://stackoverflow.com/a/1372163/1469208)のコメントやその他の多くのリソースにあります。これはPHPプログラミングの基本であるためです。 – trejder

0

はい。 if(array_key_exists('submit', $_POST))

1

はい、そうです。

imageタイプの送信を使用している場合、一部のブラウザではname属性を送信しないため、POSTを検出できません。私はそれを自分で実現するまで、頭を数回叩きました。

これの回避策は、hiddenタイプの入力も追加することです。

3

あなたが依存することなく、汎用ルーチンを持つようにしたい場合は、「方法」(ポスト/取得)とフォーラムの要素のいずれかの他の名前、そして、私はこの

<?php 
$isPostBack = false; 

$referer = ""; 
$thisPage = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 

if (isset($_SERVER['HTTP_REFERER'])){ 
    $referer = $_SERVER['HTTP_REFERER']; 
} 

if ($referer == $thisPage){ 
    $isPostBack = true; 
} 
?> 

をお勧めします今$ IsPostBackプロパティがtrueになる場合ポストバックの場合はfalse、そうでない場合はfalse。私はこれが