防止垃圾留言的小技巧

  不管是自己寫的留言版討論區,或是現成的套件如Wordpress、phpBB、Discuz,甚至是奇摩家族等,時常會出現廣告留言,想當然這些留言是用程式去跑的。

  要怎麼處理這些廣告留言機器人呢?一般來說最廣泛的解法是產生一個隨機文字的圖形,再讓使用者去手動輸入圖形上的文字,若兩者相符合才接受留言,這個東西有現成的可以套用,在一些套件上也會內建或是有plugin可以使用。

  在這裡不是教你去抓現成的來套在自己寫的程式上,我也懶的這樣搞,我們可以注意看這些垃圾留言(spam)的特色,基本上牠會填滿所有文字欄位,因為有的欄位在程式中會是必填的,例如留言版中的留言內容,所以我們往這個方向來處理。

  基本上這是我在留言版(就是書上和站上用的)上實做過一段時間且還沒發生過意外,這邊以這個實際的例子來說明,你們可以依照需求自己修改或是試驗看看,先看看留言版長什麼樣子(上方連結),在新增留言的介面中有很多資訊可以選填,這邊的作法是把ICQ這個已經幾乎不會有人填的抓出來玩,ICQ的特色就是「它一定是數字」,所以在寫入留言的SQL前面我加了這一段:

  if(!is_int($_POST['ICQ']) && $_POST['ICQ'] != "")
    die();

  是不需要在die裡面填上罵人的字眼,因為都是bot牠們看不懂,這樣子只要ICQ欄位被填上資訊但卻不是數字那麼留言就不會被寫入到資料庫中。

留言