私が使用するスクリプトに遭遇しています
isset($_POST['submit'])
だけでなく、コード使用していること:
$_SERVER['REQUEST_METHOD']=='POST'
私はこれら2つの方法の違いと、どの方法が最適かを考えていました。
私が使用するスクリプトに遭遇しています
isset($_POST['submit'])
だけでなく、コード使用していること:
$_SERVER['REQUEST_METHOD']=='POST'
私はこれら2つの方法の違いと、どの方法が最適かを考えていました。
これらは、2つの異なることを意味します。最初に、フォームが提出されたときにパラメータsubmit
が渡されたかどうかを確認します。多くの人がこのスニペットを使用して、フォームが送信されたことを確認します。これは、送信ボタンが技術的には<input>
なので、値はフォームの一部であった他の要素と共に送信されるため、これは機能します。
<?php
if(isset($_POST['submit'])) { // This way form and form logic can be adjacent to each other
// Logic
}
?>
<form method='POST' action='<?= $_SERVER['REQUEST_URI'] ?>'>
<!--- other form stuff -->
<input type="submit" name="submit" value="Send!" />
</form>
2番目のスニペットは、フォームがPOSTメソッドで送信されたかどうかをテストします。これは必ずしもフォームボタンが押されたことを意味しません。 POSTと共に提出されなかった場合、超大域$_POST
は空になります。
さまざまなことがあります。
最初に、$_POST
配列のキー(submit
)が設定されているかどうかを確認します。
$_SERVER
配列のキーの値が'POST'
であるかどうかを確認します。私は、データが "get"や "post"メソッドを使って送信されたかどうかを知るためにこれを使うと思いますが、通常はどのメソッドが使われているのか気にしません。
あなたは何をしようとしていますか?
最初のステートメントは、要求メソッドがPost
であるかどうか、および要求に要素submit
の値が含まれているかどうかを確認します。 2番目の方法は、要求メソッドがPost
であったかどうかをチェックするだけです。
フォームが投稿されたかどうかを確認するには、2番目の方法は、1つのことと1つのことを行うことで、少し明確になります。しかし、私はどちらを使うべきかについてあまり心配しません。
isset($_POST['submit'])
すでに特定の値が常にを送ったので、(この場合はsubmit
フィールド)期待されるフォームの送信を示しているであろうことがわかっている場合、このコードはあなたに二つのことを教えてくれます:
GET
とは対照的にフォームを、POST
方法を介して送信され、PUT
などsubmit
フィールドが渡されています。$_SERVER['REQUEST_METHOD'] == 'POST'
これはまさに一つのこと、POST
メソッドを介して提出されたフォームを示します。などがそれを使用する理由:
GET
、PUT
、)ページ検索の他の種類を区別したい旧対
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!isset($_POST['name'])) {
// at this point you know that `name` was not passed as part of the request
// this could be treated as an error
}
}
さ:フォームを提出することができるよう要求して送信ボタンフィールドのチェック
if (!isset($_POST['name'])) {
// the `name` field was not passed as part of the request
// but it might also be a GET request, in which case a page should be shown
}
重要
は信頼できるものではありません(テキストボックスでEnterキーを押すなど)。ちょうどあなたがそれを主張することができ、この式を使用することにより
$_POST
:
POST
送信ボタンがフォームの送信を検出するのを確認しないでください。ユーザーがEnterキー(特定のブラウザで)や特定のjavascriptフォーム送信メソッドを使用してフォームを送信すると失敗します。フォーム提出が黙って失敗したときにユーザーに非常に迷惑をかける... – goat
いずれにしても、あなたのコメントはあなたの懸念に対処するために私の答えでいくつかの変更を加えました... look pls –
を提出されました、彼らは別の仕事をする – zerkms
'$ _POST ['submit']'、wの存在を確認するここでは 'submit'は' type = submit name = submit'ボタンの名前であり、PHPコーダーの間で頻繁に実行される最も一般的な(そしてラメ)習慣の1つです。あなたのコードは、ユーザーが一般的なWebブラウザベースの相当な塊の中でEnterキーを使用してフォームを送信すると、完全に失敗します。しないでください、それは非常に素人です。 – goat
@chris Thanxは情報のために、それを知らなかった。私はかなりPHPに新しいです。 – Madz