Php 如果HTML表单是子站点,请检查

Php 如果HTML表单是子站点,请检查,php,html,forms,Php,Html,Forms,是if($\u POST['submit'])。。。与if(isset($\u POST['submit'])…相同,或者它意味着其他东西?我应该使用哪一个来检查表单是否已提交 有什么方法可以提取表单名称吗?它们是相同的,但使用if(设置($\u POST['submit'])或if(!empty($\u POST['submit'])更好。使用if($\u SERVER['REQUEST\u METHOD']='POST')。所有其他方法都有缺陷。如果重命名提交按钮呢?要获取表单名称,您可以:

if($\u POST['submit'])
。。。与
if(isset($\u POST['submit'])
…相同,或者它意味着其他东西?我应该使用哪一个来检查表单是否已提交


有什么方法可以提取表单名称吗?

它们是相同的,但使用if(设置($\u POST['submit'])或if(!empty($\u POST['submit'])更好。

使用
if($\u SERVER['REQUEST\u METHOD']='POST')
。所有其他方法都有缺陷。如果重命名提交按钮呢?

要获取表单名称,您可以:

1) 使用值与表单名称相同的隐藏输入字段

2) 将提交按钮的名称设置为表单名称

实际的表单名称不会在POST或GET变量中发送

确定变量是否已设置且不为空

(与!空($var)相同) 如果var具有非空且非零值,则empty返回FALSE

以下内容被认为是空的:

* "" (an empty string)
* 0 (0 as an integer)
* 0.0 (0 as a float)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)
页面可以有多个表单。最好也为提交元素指定一个值:

<input type="hidden" name="submit" value="login" />
if(isset($\u POST['submit'])
检查变量是否存在,或者在本例中检查数组下是否存在键且不为null

if($\u POST['submit'])
将检查
$\u POST['submit']
的值是否等于true(或其他计算结果为true的值)


第二种方法是,如果未设置变量,则会抛出一个通知错误。您应该使用isset检查变量是否已设置,这就是它的用途。

真正告诉您的是,表单是使用
输入提交的
名称
submit
。如果您希望检查是否提交了特定表单,则应该使用另一种方法。否则,您可以检查
是数组($\u POST)
真的
。我喜欢这种方法,但它不显示表单的“键字段”已发送,并且当您检查POST中的一个键时,例如,如果设置($\u POST['username'])如果为true,则显然意味着$\u POST是数组,不是吗?希望您在确定发送了POST时正在进行验证,因此确定是否设置了特定字段可能会适得其反。如果您确实在尝试执行/阻止某些操作,而不是过度工程,则可能会在隐藏的fie中发送计算出的哈希代码ld,存储在DB表中,提交时检查以确保代码已设置/验证。这是一种反CSRF表单spoffing。但如果他使用get请求,他将不会检查$\u POST['submit']我是说,如果在另一种情况下,有人必须使用get,那么什么方法对双方都有效这是没有意义的,你不能。你可以检查$u请求,但如果上帝看到他会杀死十只小狗。你设计表单,你就在那里张贴帖子。如果你使用get达到同样的目的,你的设计是错误的。如果($u SERVER['REQUEST\u method']=='POST'|$_服务器['REQUEST_METHOD']='GET')…应该检查两种方式,但是如果发送中没有任何内容呢?我实际上想看看是否所有请求的值都已发送,因此我将使用例如isset($\u POST['username'])它们不一样。在本例中不使用isset将引发错误。如果我也可以检查提交按钮值,则隐藏一个输入有什么好处?例如,如果(isset($\u POST['submit'])&&&$\u POST['submit']=='Send'){}
if (isset($_POST['submit']) && $_POST['submit'] == 'login') {

}