2009-09-08 23 views
1

我正在實現網站的聯繫表單,並且我想避免使用驗證碼,因爲我認爲它對用戶體驗有負面影響。PHP檢測字符串中有多少個URL

取而代之,我決定嘗試檢測已隨消息提交的URL數量。

我從$ _POST提交中以字符串的形式檢索消息。我知道內置的PHP函數,比如stristr()可以讓我確認消息中存在一個子字符串,但是我想要的是計數。

此外,就垃圾郵件檢測而言,匹配「</a >」這樣的內容是否合適?

乾杯。

回答

4

substr_count($文本,「HTTP」) http://www.php.net/manual/en/function.substr-count.php

注意,是不夠的,但也不是允許用戶輸入未經過濾的數據轉化爲被呈現爲HTML表單字段。

我不應該能夠把JavaScript的在那裏無論是由於跨站點腳本http://www.owasp.org/index.php/Top_10_2007-Cross_Site_Scripting

我推薦使用http://htmlpurifier.org/,以消除任何惡意代碼。

最後的垃圾郵件過濾我建議http://akismet.com/

好運。

+0

HTML,JavaScript和SQL注入的處理是罰款。我甚至沒有在頁面上渲染任何東西,我只是想自動禁止儘可能多的垃圾郵件。每個人都認爲,因爲我沒有特別提到HTML注入處理,即使它與我的原始問題無關,我一定忽略了這一點。 – Evernoob 2009-09-08 16:15:20

+1

不好意思,但是如果有機會還沒有發生在你身上,它仍然值得冒着惱人的心情冒險。看看akismet,它處理垃圾郵件比url計數好得多。這是幾乎每個wordpress都用到的。 – 2009-09-08 16:30:00

+0

此外,如果你錯過了,我直接回答你的問題與我的職位的第一部分。讓你忽略其餘的。 – 2009-09-08 16:30:49

0

如果這是一個聯繫表單,則不需要接受html。只需編碼整個內容並限制來自同一個IP的帖子數量或限制消息之間的時間。

是的,你可能會限制網址數量,但我不認爲這是有效的

+0

這將有效減少我已經通過聯繫表單獲得的垃圾郵件,這些垃圾郵件都被網址侵入。大多數機器人,儘管顯然是相同的可以切換IP地址,但消息之間的時間思想是好的。 – Evernoob 2009-09-08 16:27:43