Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 忽略具有以前提交的定义的表单变量_Php_Forms_Post_Isset_Defined - Fatal编程技术网

Php 忽略具有以前提交的定义的表单变量

Php 忽略具有以前提交的定义的表单变量,php,forms,post,isset,defined,Php,Forms,Post,Isset,Defined,我创建了一个表单,当我提交表单时,我的php将表单数据写入数据库。完成了 但现在我看到,当某些字段留空时,表单仍然被写入数据库,代码只是写入上次提交表单字段时留下的变量 我尝试了以下if语句,但这并不能解决问题: if ( isset( $_POST['request_num']) ) { // write to the database } 我是否可以修改if语句,将其改为:如果在此提交上设置了变量$\u POST['request\u num'],则运行代码,并忽略以前提交的所有旧值设置?

我创建了一个表单,当我提交表单时,我的php将表单数据写入数据库。完成了

但现在我看到,当某些字段留空时,表单仍然被写入数据库,代码只是写入上次提交表单字段时留下的变量

我尝试了以下if语句,但这并不能解决问题:

if ( isset( $_POST['request_num']) ) {
// write to the database
}
我是否可以修改if语句,将其改为:如果在此提交上设置了变量
$\u POST['request\u num']
,则运行代码,并忽略以前提交的所有旧值设置?

您可以尝试以下操作:

if (!empty( $_POST['request_num'])) {
    // write to the database
    header('Location: index.php');
}

使用将确保不会从浏览器刷新并重新发送表单数据。用正确的文件名替换index.php。

可能有点离题,但请向我们保证,您知道接受未经筛选、未验证的$\u POST数据的安全问题。我使用
htmlspecialchars()
过滤输入,所以我认为这解决了安全问题,对吗?只是说,我看到的代码示例没有任何转义、清理或过滤。Header将您发送到php文件,以清除您使用POST或GET提交的数据。因此$\u POST['request\u num']被清除。您提交表单并处理来自POST变量的数据,然后使用头重定向到同一个文件,但没有任何输入表单数据。因此,如果在重定向后刷新,则只会得到标头发送给您的内容,而这只是一个原始标头。希望这是有意义的。哦,谢谢,是的