2011-08-16 88 views
0

HTML:这是如何检查表单是否已提交?

<form name="myform" action="process.php" method="POST"> 
    <input type="hidden" name="check_submit" value="1" /> 
    <!-- ........ --> 
</form> 

PHP:

if (array_key_exists('check_submit', $_POST)) {....} 

为什么array_key_exists('check_submit', $_POST)检查是否提交表单?

我见过isset($_POST['...'])以前用过,但不是这个。

如果我不这样做array_key_exists('check_submit',$ _POST)的决定,会发生什么。

+1

有没有理由不应该? –

+0

应该是'isset($ _ POST ['...'])'...不要下划 –

回答

1

check_submit是场你的表格,所以当你提交表格时,该字段在POST数据中可用。

PHP将传入的POST-方法表单数据放入$_POST超全局数组中,并且您的代码确定是否可以在该数组中找到check_submit字段。

事实上,它与isset($_POST['check_submit'])非常相似,因为它检查$_POST中是否存在这样的元素。这只是略有不同的方法。


如果您没有提交表格,那么当然没有表格数据。

+0

@runeveryday:如果您提交表格,您可以提交表格吗?咦? –

+0

我很抱歉,我的意思是如果我不填写所有输入文本框。那么我提交表单,输入部分的数据可以插入到数据库中? – runeveryday

+1

@runeveryday:我无法理解你。提交表单时,您输入的任何数据都会提交给Web服务器,以及您可能正在目标URI上运行的任何PHP脚本。该PHP脚本可以对它接收的数据做任何喜欢的事情。 –

0

难道你的意思是这样:

 
if(!empty($_POST) && isset($_POST['check_submit']) && $_POST['check_submit'] == '1'){ 
    // do something 
} 
+0

最后两个条件可以被压缩,而第一个是没有意义的。 –

+0

$ _POST似乎总是存在,即使在CLI解释器中。 –

+0

确实...我的不好...编辑了我的答案,所以它更有意义。我只是指出了海报的一些选项。 –

0

不要var_dump($_POST),你会看到$ _POST关联数组,这将有check_submit键,和值= 1

3

要请检查是否你的网页被称为提交(通过POST)形式的结果,你应该使用这样的事情:

if ($_SERVER['REQUEST_METHOD'] == 'POST')

你不应该使用隐藏的表单元素正好有个价值来检查表单是否已提交。如果使用请求方法,则可以更清楚地捕获请求方法,并且如果更改表单ID /名称/值,则不会有任何问题。