【发布时间】: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,但如果你说直到昨天一切正常……可能是服务器出了问题。