Php isset($#u POST[';submit';])与$#u SERVER[';REQUEST#u METHOD';]==';邮政';
我遇到过使用以下内容的脚本:Php isset($#u POST[';submit';])与$#u SERVER[';REQUEST#u METHOD';]==';邮政';,php,Php,我遇到过使用以下内容的脚本: isset($_POST['submit']) 以及使用以下各项的代码: $_SERVER['REQUEST_METHOD']=='POST' 我想知道这两种方法之间的区别以及哪种方法最好。它们做的事情不同 第一个检查是否设置了$\u POST数组中的键(submit) 第二个检查$\u服务器数组中键的值是否为'POST'。我想人们会用它来判断数据是使用“get”还是“post”方法发送的,但通常情况下,您不仅关心使用了什么方法,而是关心发送了什么数据 你想做什
isset($_POST['submit'])
以及使用以下各项的代码:
$_SERVER['REQUEST_METHOD']=='POST'
我想知道这两种方法之间的区别以及哪种方法最好。它们做的事情不同 第一个检查是否设置了
$\u POST
数组中的键(submit
)
第二个检查$\u服务器
数组中键的值是否为'POST'
。我想人们会用它来判断数据是使用“get”还是“post”方法发送的,但通常情况下,您不仅关心使用了什么方法,而是关心发送了什么数据
你想做什么?这意味着两件不同的事情。首先,检查表单提交时是否传递了参数
submit
。许多人使用此代码段来验证表单是否已发送。这是因为submit按钮在技术上是一个
,所以它的值与表单中的任何其他元素一起发送
<?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
,以及请求是否包含元素submit
的值。第二种方法只检查请求方法是否为Post
为了检查是否发布了表单,第二个表单更好,因为它稍微清晰一些,只做一件事。不过,我不会太担心使用哪一个
isset($_POST['submit'])
如果您已经知道将始终发送特定值,因此表示预期的表单提交(本例中的提交
字段),则此代码将告诉您两件事:
表单通过POST
方法提交,而不是GET
、PUT
等
submit
字段已通过
这正好告诉您一件事,表单是通过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
至少已提交一个字段
它们是无与伦比的,它们做不同的工作检查$\u POST['submit']
的存在,其中submit
是type=submit name=submit
按钮的名称,是php程序员中最常见(也是最蹩脚)的习惯之一。当用户通过公共web浏览器库中相当大一部分的enter键提交表单时,您的代码将完全失败。不要这样做,这是非常业余的。@chris Thanx提供信息,他不知道。我对php非常陌生。superglobal$\u POST
总是设置好的,并且总是一个数组。@Arjan很好的理解。更好的措辞:“将是空的”如果我错了,请纠正我,但是如果表单方法是POST,那么$u POST将是空的唯一方法不是没有按下按钮吗?@Madz是对的。但是,如果您的表单逻辑与表单位于同一页面上,请检查是否存在submit
或其他字段,以验证表单是否已提交并应进行处理。不要检查提交按钮以检测表单提交。当用户通过enter键(在某些浏览器中)和某些javascript表单提交方法提交表单时,它会失败。当表单提交失败时,用户会非常恼火…@rambocoder在任何情况下,您的评论都让我改变了回答中的一些内容,以解决您的问题。。。请看一看
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
}
$_POST