2017-12-27 810 views
0

我知道我可以通過js禁用按鈕,但用戶可以在他的瀏覽器中輕鬆修改該按鈕。如何防止對php或mysql級別的雙表單提交?

所以,我正在尋找一個簡單的解決方案如何做到這一點。

我已經嘗試過這個SESSION技巧https://stackoverflow.com/questions/20766744/php-double-form-submit-prevent但是,我仍然可以點擊快速,它會在db中保存很多東西。

此外,如果我做了does a row with the same user_id, item_id and comment_id in the table reviews exist then stop條件 - >這也不起作用,當我點擊按鈕非常快。

mysql是否有一些功能可以拒絕使用相同的信息保存多行?

如果類似的東西存在,那將是偉大的。

例如user_id, item_id, comment_id只能保存一次,或者可能使用一些時間預防來保存多個事物。

+2

那麼,你可以在這三個領域設置一個唯一的索引......但這是相當強悍和不靈活的。取決於你的結構和所需的需求。 – IncredibleHat

+0

在將任何數據保存到數據庫之前,首先檢查數據庫表,以查看數據庫表中是否存在提交的數據之一,如用戶名。如果是,則標記用戶,如果不驗證表單並保存您的信息。 – dean

+0

好吧,如果我有一個表'評論'和字段'id,user_id,item_id,comment_id',並且只有這三個組合中的每一個(user_id,item_id,comment_id)可以保存如何做到這一點? – Greggore

回答

1

設計您的數據,使多個提交不會導致多個條目。

這裏有2種方法可以實現,我更喜歡第二種。

[Unique columns]1@標誌來壓制php中的錯誤。 < - 這個結果在最近提交插入

或者更好的是你可以做一個調用數據庫,看看信息已經存在,如果是這樣,不要讓insert電話。 < - 這導致第一次提交inserted。如果適合,條件邏輯可以繼續調用update