HTML表单两次发布到PHP脚本

时间:2014-07-23 08:54:55

标签: php html forms apache2

我知道这已经提到了,但是我找不到任何实际的解释,所以我希望得到更多的信息,我们可以放下这个。

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

以下是证明它的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;
?>

道歉,上面是正确的形式和脚本......

1 个答案:

答案 0 :(得分:0)

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