web-dev-qa-db-ja.com

フォームが送信されたかどうかの確認 - PHP

フォームの変数を検証クラスに渡す必要があるかどうかを判断するためにフォームが送信されたかどうかを確認する最善の方法は何ですか?

まず私は考えた:

isset($_POST)

しかし、スーパーグローバルはどこでも定義されているので、それは常に真を返します。私のフォームの各要素を次のように繰り返し処理する必要はありません。

if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc

この質問を書いている間、私はもっと基本的な解決策を考えました、私がチェックすることができる旗として機能するために隠しフィールドを追加してください。

私自身のフラグを追加するよりも「クリーン」な方法はありますか?

117
Anonymous

POSTアクションがあったかどうかを一般的にチェックするには

if (!empty($_POST))

EDIT:コメントに記載されているように、このメソッドは場合によってはうまくいきません(例えば、チェックボックスや名前のないボタンなど)。あなたは本当に使うべきです:

if ($_SERVER['REQUEST_METHOD'] == 'POST')
179
matino

どうですか?

if($_SERVER['REQUEST_METHOD'] == 'POST')
165
Olaf

実際には、送信ボタンはすでにこの機能を実行しています。

FORMで試してみてください。

<form method="post">
<input type="submit" name="treasure" value="go!">
</form>

それからPHPハンドラで:

if (isset($_POST['treasure'])){
echo "treasure will be set if the form has been submitted (to TRUE, I believe)";
}
68
Tzshand

つかいます

if(isset($_POST['submit'])) // name of your submit button
31
Rikesh

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

29
CodeCaster

これを試して

 <form action="" method="POST" id="formaddtask">
      Add Task: <input type="text"name="newtaskname" />
      <input type="submit" value="Submit"/>
 </form>

    //Check if the form is submitted
    if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['newtaskname'])){

    }
13
rizon

私は同じ問題を抱えていた - またあなたがname=""を入力ボタンに追加することを確認しなさい。まあ、その修正は私のために働いた。

if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['add'])){
    echo "stuff is happening now";
}

<input type="submit" name="add" value="Submit">
0
Jen