【问题标题】:completely replace an HTML file with another using PHP使用 PHP 将一个 HTML 文件完全替换为另一个
【发布时间】:2016-06-28 07:41:03
【问题描述】:

我正在处理一个 html 表单,我只想使用一次。 所以如果一个人填了,另一个人应该不能再填了。甚至不是同一个人,即使他或她在浏览器中点击返回也不行。

到目前为止,我想到了多种可行的方法:

  1. 使用 PHP 将 form.html 页面完全替换为另一个 .html 文件,我已经为此目的存储在服务器上,或者

  2. 使用 PHP 部分替换 form.html 页面,即使它比完全替换 html 页面没有任何附加值,或者

  3. 在我的 form.html 文件中添加一个隐藏字段(在这种情况下我必须将其更改为 .php 页面),将“1”发布到数据库中,我可以在每次 form.php 页面时检索它以一种在设置 0 时显示表单的方式加载,而在设置 1 时不显示表单。在这种情况下,我还想知道是否没有更简单的解决方案来创建一个数据库来存储一个“1”。

我知道如何使用谷歌,通常我总是设法找到解决方案,但现在我感到无能为力。请有人帮我一个简单的解决方案。

【问题讨论】:

  • 你的意思是这是一个只能填写一次的html表单?或者你的意思是来自同一个人的一次?
  • 您应该停止将 html 表单视为“html 文件”,并尝试通过服务器上的物理存储来控制它们的使用。这并没有真正起作用,而且非常笨拙。请记住,有诸如缓存和代理之类的东西……而是将 html 表单视为某些控制器逻辑输出的一些文本。不多也不少。所以你想要做的实际上是这样的:根据人们如何使用你的应用程序(存储在数据库等中)的历史,你的控制器输出不同的表单。这既简单又可靠。
  • @Basti 这是一个html表单,只能填写一次。
  • @arkascha thnx,但我只需要一个简单的解决方案即可。
  • 切换输出肯定比替换文件简单得多...

标签: php html forms replace


【解决方案1】:

我在邮件脚本的末尾使用了重命名命令,这样就可以了:

mail($to, $subject, $comment, $headers);
rename('../mailtest/replace/emailform.html', '../mailtest/emailform.html');
?>

【讨论】:

  • 这是不安全的,因为在实际处理之前提交的表单之前,它无法防止对文件的请求。因此,多个客户端可以请求并加载表单,直到第一个提交并因此触发物理文件的替换。这意味着所有其他客户都留下了仍然有效且可用的“过时”表单......
  • 啊这样,我明白了。我通过两个脚本发送变量,所以我会让这个脚本也用重定向页面重命名第一个脚本,谢谢你的帮助。
  • 好的,如果这可以为​​您解决问题,那很好。那么我想补充的是:请记住,您的方法非常不正统。它引发了各种安全问题(可能与您无关,当然)并且是不必要的不​​安全且成本高昂(将文件系统操作与简单的条件进行比较)。因此,对于未来,您可能需要了解 MVC 理念是如何工作的,以及为什么它是此类实现的首选和标准方法。
猜你喜欢
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 2021-08-30
  • 1970-01-01
  • 2014-08-30
  • 1970-01-01
  • 2017-01-04
相关资源
最近更新 更多