【问题标题】:HTML Form posting twice to php scriptHTML 表单两次发布到 php 脚本
【发布时间】:2014-07-23 08:54:55
【问题描述】:

我知道这个问题之前已经提出过,但我找不到任何实际的解释,所以我希望有更多的信息,我们可以解决这个问题。

问题:当用户提交 html 表单时,浏览器会将信息发布到 php 脚本 - 它应该只执行一次,但我可以看到它执行了两次。 p>

这是证明这一点的 apache2 日志条目:

192.168.178.20 - - [22/Jul/2014:15:00:14 +0000] "POST /postman/scripts/run.php HTTP/1.1" 302 325 "http://192.168.178.33/postman/submit.html" "Mozilla/5.0 (Windows NT 6.1; WOW64) $
192.168.178.20 - - [22/Jul/2014:15:00:16 +0000] "POST /postman/scripts/run.php HTTP/1.1" 302 326 "http://192.168.178.33/postman/submit.html" "Mozilla/5.0 (Windows NT 6.1; WOW64) $

您可以看到表单在 2 秒内发布了两次。我就站在用户身后,她没有刷新页面,也没有点击返回并重新发送。

对于任何想要解决这个问题的人来说,这里都是冗长的背景。

该网站托管在 Raspberry Pi 上,只能从本地网络中的一台 PC 访问。它只托管一个站点,这是我正在开发的一个程序,它允许用户向多个人发送电子邮件(简单地说)。

用户在他们的桌面上启动网站,然后基本上用某些信息填写 html 表单,比如电子邮件正文、主题和发送到哪个组等......

html 表单发布到一个 php 脚本,该脚本只负责将信息写入 txt 文件,然后执行 bash 脚本,该脚本循环发送通过一组收件人的电子邮件。

这一切都相当简单,但如果 html 表单发布两次,基本上整个程序都会崩溃,让我看起来像个白痴。也许我是……

我可以想办法阻止这种情况再次发生,但我真的很想知道我做错了什么。我希望对此有一个简单的解释......

谢谢。 蒂姆

编辑:

HTML 表单

<form method="post" action="./scripts/run.php" align="right" >
<input type="submit" name="submit" value="Send" class="button" align="right" />

PHP

<?php
ob_start();
exec('./postman.sh');
header('Location: /postman/verify.html');
exit;
?>

抱歉,以上是正确的形式和脚本...

【问题讨论】:

  • 代码在哪里?我们不是通灵者:)
  • 顺便说一句:这只是昨天才开始发生的——在此之前没有对涉及的任何代码进行任何更改。它曾经运行得非常好,没有任何障碍......
  • mdesdev,您需要查看哪些代码?这是一个非常基本的 html 表单...
  • php 脚本和 html @asimovwasright
  • HTML、PHP、JS,但如果你说直到昨天一切正常……可能是服务器出了问题。

标签: php html forms apache2


【解决方案1】:

在这种情况下,答案是创建一个 js 函数,以在单击后立即将 html 按钮替换为其他内容,因此用户在等待时无法单击两次。我使用了一个通用的加载 gif,一切正常......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2012-08-31
    • 2019-05-31
    • 2019-10-31
    • 1970-01-01
    • 2014-06-12
    • 2015-06-27
    相关资源
    最近更新 更多