【问题标题】:Ignore form variables that have definition from prior submission [duplicate]忽略从先前提交中定义的表单变量[重复]
【发布时间】:2020-02-20 21:56:34
【问题描述】:

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

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

我已经尝试了以下 if 语句,但这并没有削减它:

if ( isset( $_POST['request_num']) ) {
// write to the database
}

我可以修改 if 语句说:如果变量 $_POST['request_num'] 已在此提交上设置,则运行代码并忽略以前提交设置的所有旧值?

【问题讨论】:

  • 可能有点离题,但请向我们保证,您知道接受未经过滤、未经验证的 $_POST 数据的安全问题。
  • 我用htmlspecialchars() 过滤输入,所以我认为这解决了安全问题,对吧?
  • 只是说,我看到的代码示例没有任何转义或清理或过滤。

标签: php forms post isset defined


【解决方案1】:

你可以试试这个:

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

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

【讨论】:

  • Header 将您发送到您的 php 文件,清除您使用 POST 或 GET 提交的数据。所以 $_POST['request_num'] 被清除了。
  • 您提交表单并处理来自 POST 变量的数据,然后使用标头重定向到同一个文件,但没有任何输入表单数据。因此,如果您在重定向后刷新,您只会得到标头发送给您的内容,而这只是一个原始标头。希望这是有道理的。
  • 哦,谢谢,是的
猜你喜欢
  • 1970-01-01
  • 2017-11-18
  • 2022-01-18
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 2011-10-27
  • 1970-01-01
相关资源
最近更新 更多