2009-07-09 62 views
1

我正在爲我的公司創建聯繫表單,並且希望儘可能使其成爲防垃圾郵件。我已經創建了一個蜂蜜罐+會話檢查,但我也想這樣做,只有每隔x分鐘才能提交一次表單。換句話說,禁止知識產權使用該表格x時間。PHP暫時禁止IP

這樣做的最佳解決方案是什麼?

我能想到幾個,但沒有一個看起來很理想。

回答

5

每次提交表單時都會將用戶IP存儲在數據庫中以及時間戳。當用戶提交表單時,首先檢查數據庫以查看他們是否在時間範圍內提交。

大型網絡可能會出現一些問題,用戶可以使用相同的IP。這取決於目標受衆,真的。

2

數據庫。將IP存儲在那裏併爲其添加時間戳。

0

我在某些博客上看到的一個很好的方法是使用JavaScript來防止漫遊器。就像在onsubmit()事件中一樣,將表單的方法從GET更改爲POST。你也可以做其他魔法。機器人在執行JavaScript時非常無能,所以您可以將其用於您的優勢。

另一方面 - 這可能會損害未啓用JavaScript的用戶的0.0000001%。那麼,你的選擇真的。 :)

+1

擰那些人,不錯的提示。 – zuk1 2009-07-09 14:20:09

0

如果你不介意限制的形式支持cookie的瀏覽器(消除一些「瀏覽器」又名機器人我假設),你可以做這樣的事情:

表單頁面加載時,它會檢查帶時間戳的會話變量。如果沒有找到,它會創建一個並重定向到同一頁面,但帶有指定「action = start」或某事的GET參數。因此,在第二次加載時,如果您看到$ _GET ['action'] =='start',則可以檢查該會話變量。如果你沒有找到一個,你可以重定向到其他地方說cookie是必需的。

現在,您可以檢查時間戳,如果過早,可以執行其他操作。

這種方法至少會允許相同的IP,因爲如果你處理防火牆後面的一大羣人,你不必阻塞整個組。

0

數據庫的東西可能是你最好的選擇,因爲它不需要他們允許任何事情,它只是記錄他們的數據。唯一的問題是,他們可能會掩蓋他們的IP或從多個地方擊中它。我會嘗試在數據庫上使用會話/ cookie交叉引用IP。如果同一個人使用相同的IP地址非常快速地訪問您的網站,這很明顯,但是如果您也創建了用戶ID,則可以看到他們是否正在快速切換IP地址。

0

它也不會傷害有某種cron腳本(或至少一個工具書寫和待命)準備清理一個混亂,通過設法。對於我的網站,我正在撰寫一個在很短時間內(10秒內)標記來自多個ips的完全相同的提交。

至少你可以寫一些查詢來顯示評論表單中可疑的提交內容。