我遇到过使用以下脚本的脚本:
isset($_POST['submit'])
以及使用的代码:
$_SERVER['REQUEST_METHOD']=='POST'
我想知道这两者之间的区别以及哪种方法最好。
我遇到过使用以下脚本的脚本:
isset($_POST['submit'])
以及使用的代码:
$_SERVER['REQUEST_METHOD']=='POST'
我想知道这两者之间的区别以及哪种方法最好。
isset($_POST['submit'])
如果您已经知道将始终发送特定值,因此表示预期的表单提交(submit
本例中的字段)此代码将告诉您两件事:
POST
,而不是GET
,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
他们做不同的事情。
第一个检查是否设置了数组submit
中的键 ( ) 。$_POST
第二个检查$_SERVER
数组中某个键的值是否为'POST'
。我想有人会使用它来判断数据是否已使用“get”或“post”方法发送,但通常您不仅关心使用了哪种方法,而是发送了哪些数据。
你想做什么?
这意味着两个不同的东西。首先,检查表单提交时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>
第二个片段测试表单是否使用 POST 方法提交。这并不一定意味着表单按钮被按下。如果它没有通过 POST 提交,那么超全局$_POST
将为空。
第一条语句检查请求方法是否是Post
以及请求是否包含 element 的值submit
。第二种方法只检查请求方法是否为Post
.
要检查表单是否已发布,第二个更好,因为它稍微清晰一些,只做一件事。但是我不会太担心使用哪一个。