自己設計留言板時,如果沒有避免垃圾留言的機制的話,被廣告機器人用程式塞滿垃圾留言的機會還蠻大的,而且這些垃圾留言還可能來自世界各國,又經常是一些色情網站或木馬網站的留言,真的很困擾。
目前經常看到的避免垃圾留言的機制就是顯示一張內含文數字的圖片,然後去驗證輸入是否相同,如果是自己用Dreamweaver的話,要加上這樣的機制就得花些功夫。不過這幾天在書上看到個方式,值得去嘗試。
作者的觀察到的是,一般的垃圾留言機器人(bot)都會把留言的欄位塞滿,所以只要在表單中設置一個「不顯示」的欄位,引誘留言機器人去填資料,然後判斷該欄位是否有資料,有填入資料的話應該就是留言機器人,那麼就不去新增資料。
作法:
1.在表單中增加一個「不顯示」的欄位,例如在表單中增加這樣一項:
style="display: none;" />
也就是利用 inline的css來讓該欄位不顯示出來,避免填表的人真的填入資料了。
2.在 Dreamweaver的插入表單的程式(if((isset($_POST["MM_insert"]) ......這一段)之前,增加這樣的判斷:
if($_POST['Memo']) != NULL){
die();
{
這樣就應該可以避免大部分的垃圾留言了。
使用Dreamweaver ADDT時:
那如果有使用Dreamweaver CS3的開發工具ADDT的話呢, 那上面的方式就不適用了, 因為 ADDT並未使用同樣的方式新增表單, 所以根本找不到 if((isset($_POST["MM_insert"]) ...... 這一段,更簡單的方式是,ADDT本身就已經提供了內含文字的圖片的驗證方式,只要在ADDT工具列找到"Insert Captcha Image"插入至表單,設定好錯誤碼並修改提示文字(改成中文),就可以了。
特別注意:
使用ADDT的 "Insert Captcha Image" 時,圖片是動態產生的,產生文字圖片時會用到「 /includes/common/_temp/ 」這個目錄,使用過後的圖片也會自動被清除,所以必須將此目錄設定為一般使用者(任何人)都可以讀、寫,如果網站是在虛擬主機時,預設權限就可能不是全部開放,此時如果看到畫面插入的"Captcha Image"無法顯示且出現錯誤訊息,應該就是權限未設定好。
另外,「 /includes/common/_temp/ 」目錄底下有一個預設檔案「empty.txt」,此檔不應該刪除。
順便推薦一下這本書:精通Dreamweaver CS3 與 PHP MySQL 實例整合應用經典
ps:ADDT就是Adobe Dreamweaver Developer Toolkit, 是加強Dreamweaver CS3的資料庫網頁開發功能的套件, 不過並不含在Dreamweaver CS3之內, 是另外銷售!
留言列表