2014-07-23 64 views
0

我知道這已經提出過,但我找不到任何實際的解釋,所以我希望有更多的信息,我們可以把這個休息。HTML表單發佈兩次到php腳本

問題:當用戶提交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; 
?> 

道歉,上面是正確的形式和腳本...

+0

代碼在哪裏?我們不是心理學家:) – mdesdev

+0

順便說一句:這隻發生在昨天 - 在此之前沒有對任何涉及的代碼進行更改。它曾經運行得很好,沒有碰撞...... – asimovwasright

+0

mdesdev,你需要看哪些代碼?這是一個非常基本的HTML表單... – asimovwasright

回答

0

在這種情況下,答案是創建一個js函數,用於在點擊後立即用別的東西代替html按鈕,這樣用戶在等待時就不能點擊兩次。我用一個通用的加載gif,一切正常...