作者elfpokemon (精靈寶可夢)
看板Web_Design
標題[問題] 如何避免網頁一直被用戶 F5
時間Tue Aug 16 14:36:55 2016
標題下的有點爛,
簡單說假設我有一個檔叫 sentMail.php,
公用是打開這個網頁,
會自動寄一封信給用戶。
如果用戶用某種方法一直訪問我這個頁面,
就會一直寄送信件出去,
浪費我的頻寬和資源。
請問有什麼方法可以阻止這樣的事發生?
其實解法是有想到,
像是利用 session 去紀錄時間比對,
太近的話就導到其它頁面。
請問有沒有更好的做法?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.154.128
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Web_Design/M.1471329418.A.B23.html
1F:推 ian90911: 所以你還是要給一般人用 但要控制頻率 08/16 15:55
2F:→ imhaha: 寫時間排除 不然還有什麼方法XD? 08/16 16:27
3F:推 pm2001: 你不覺得你這樣設計 從根本上就有問題嗎? 08/16 16:39
4F:推 s89227: 你要想的是為什麼用戶會一直F5這個網頁? 08/16 16:40
5F:→ xdraculax: 前一頁加上驗證碼,寄信頁用ajax或寄完轉址 08/16 17:50
6F:→ aaa60600: event.keycode. 限制F5按鈕? 08/16 20:08
7F:→ Kenqr: 在資料庫留紀錄 08/17 00:52
8F:推 devil115789: 檔refresh不實際 可以F5 Ctrl+R 還有瀏覽器原生 08/17 09:57
9F:→ devil115789: 還有最不可能檔就是他一直重新造訪這個頁面 08/17 09:58
10F:→ devil115789: 所以發送信件通常是用上一次寄信的時間去檔時間間隔 08/17 09:58
11F:→ devil115789: 用session也不是很好 因為開新的瀏覽器就還是可以發 08/17 09:59
12F:→ devil115789: 比較好的做法還是去確認資料庫 避免不必要的資源消耗 08/17 09:59
13F:→ Canboo: 你功能應該收在class或function內,在必要時呼叫 08/17 10:23
14F:→ Canboo: 而不是直接用一個PAGE直接做這個功能然後也停在這PAGE 08/17 10:23
15F:→ Canboo: 檢討整個資訊流先,才是最根本的處理方式 08/17 10:24
好,感謝各位大大的熱心回覆。
我會再想想怎麼處理比較好,再次感謝
※ 編輯: elfpokemon (122.116.154.128), 08/17/2016 11:33:02
16F:→ ssccg: 首先要先看是有驗證過身份的使用者,還是一般人? 08/17 11:36
17F:→ ssccg: 以驗證過的使用者來說,就是server端的流程問題,要怎樣的 08/17 11:38
18F:→ ssccg: 條件會去執行那個功能,一定不能是單純連到某頁面 08/17 11:39
19F:推 shadowjohn: 通常發mail還是簡訊,都建議收到queue 08/17 13:07
20F:→ shadowjohn: 用其他排程去作這件事 08/17 13:07
21F:→ shadowjohn: 不要讓使用者畫面卡機或亂發,有個queue至少過濾方便 08/17 13:08
22F:→ shadowjohn: 也利記錄 08/17 13:08