フォームの変数を検証クラスに渡す必要があるかどうかを判断するためにフォームが送信されたかどうかを確認する最善の方法は何ですか?
まず私は考えた:
isset($_POST)
しかし、スーパーグローバルはどこでも定義されているので、それは常に真を返します。私のフォームの各要素を次のように繰り返し処理する必要はありません。
if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc
この質問を書いている間、私はもっと基本的な解決策を考えました、私がチェックすることができる旗として機能するために隠しフィールドを追加してください。
私自身のフラグを追加するよりも「クリーン」な方法はありますか?
POST
アクションがあったかどうかを一般的にチェックするには
if (!empty($_POST))
EDIT:コメントに記載されているように、このメソッドは場合によってはうまくいきません(例えば、チェックボックスや名前のないボタンなど)。あなたは本当に使うべきです:
if ($_SERVER['REQUEST_METHOD'] == 'POST')
どうですか?
if($_SERVER['REQUEST_METHOD'] == 'POST')
実際には、送信ボタンはすでにこの機能を実行しています。
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)";
}
つかいます
if(isset($_POST['submit'])) // name of your submit button
if ($_SERVER['REQUEST_METHOD'] == 'POST')
。
これを試して
<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'])){
}
私は同じ問題を抱えていた - またあなたがname=""
を入力ボタンに追加することを確認しなさい。まあ、その修正は私のために働いた。
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['add'])){
echo "stuff is happening now";
}
<input type="submit" name="add" value="Submit">