台灣最大程式設計社群網站
線上人數
1594
 
會員總數:246083
討論主題:189658
歡迎您免費加入會員
討論區列表 >> PHP >> 重新整理之後,會重複送出表單
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
重新整理之後,會重複送出表單
價值 : 50 QP  點閱數:3095 回應數:7
樓主

熱情仲夏
初學者
20 23
615 47
發送站內信

大家好,遇到一個難題,是這樣的,現在我有一個頁面,裡面有個form,當這個form送出表單時,會寫入資料庫內,但是在重新整理頁面之後,依然會再送出一次。

以下是form的部份。


當有收到$_POST['play']才寫入資料庫,以下是寫入資料庫的部份。


以下是這個formResubmitCheck的程式碼部份。


雖然參考了網路上的做法,但是依然沒有成功,可否請大家幫個忙,看看是哪裡需要修正。謝謝大家了。

本篇文章發表於2014-01-25 11:14
1樓
最有價值解答

香帥
檢舉此回應
我跟您改為如下程式碼,並測試ok,請參考:
f.php

events.php

測試網址在
http://php.a168a.com/resubmit/f.php
以上 echo '已經存檔' 上面4行程式,您再回復您的就好,我的只是示範給您看,至於實際資料庫實作仍用您自己的
本篇文章回覆於2014-01-25 16:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

熱情仲夏
檢舉此回應
很謝謝香帥大大的回覆,不好意思,剛開始沒有說明白,其實form和events.php都是在同一頁上的,包含寫入資料庫的部份,只有這個formResubmitCheck是用include進來的,所以是不是哪裡還要做些修改才可,煩請香帥大大再提點一下。
本篇文章回覆於2014-01-25 17:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

香帥
檢舉此回應
建議您要吸收,才能舉一反三,就能將我的合併吧
本篇文章回覆於2014-01-25 19:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

香帥
檢舉此回應
還有您原來的程式碼第一行
if($_POST['play']='Y'){
請改為
if($_POST['play']=='Y'){
這也是關鍵之一
本篇文章回覆於2014-01-25 19:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

熱情仲夏
檢舉此回應
謝謝香帥大大的回覆,目前合併起來遇到一個困難,就是亂數沒辦法相同,$_SESSION["formHash"]和$_POST["formHash"],因為每當form把亂數送出到events.php時,$_SESSION["formHash"]裡面存的亂數,會因為頁面被執行造成亂數被更動。


還煩請香帥大大在指點一下,謝謝您。
本篇文章回覆於2014-01-26 12:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

香帥
檢舉此回應
您合併起來
第2行程式碼
formResubmitPrint();
若不控制,當然會有問題,若要控制,就要先定義您需要的條件
相對的依據您的條件,在
formResubmitCheck()函式內也要多些判斷式去確定formResubmitPrint()若沒執行時要如何回應.

本篇文章回覆於2014-01-26 17:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

熱情仲夏
檢舉此回應
謝謝香帥大大,終於問題解決了,原來問題不止是出在上面formResubmitPrint();的條件限制,還有if(formResubmitCheck()) { 放的地方,真的非常謝謝您,麻煩您這麼多次。
本篇文章回覆於2014-01-27 10:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.