為了防止網誌被有心人士任意發佈廣告或不當言論,因此設置圖形驗證碼來防止機器人(Robot/Bot)等惡意程式發文是比較有效的作法。在 WordPress 上有一套「WP-ImgCode mod」的外掛,是目前看起來最簡單,也非常容易上手的程式。
WP-ImgCode 是由大陸的網友 dualface 開發的,可以到其 Blog 去查詢相關說明,或者是直接到下面的文章查閱:
雖然 WP-ImgCode 有一些小小的問題,但令人欣慰的是,有熱心的網友開發出了修正版,修正版增加了許多重要的功能,在這裡直角強烈建議安裝修正版,修正版的說明可以到下面的網址查閱:
這是 WP-ImgCode 修正版的下載點:
使用及安裝非常簡單,下載 WP-ImgCode 的修正版之後,將其解壓縮後的資料夾 wp-imgcode 放置於 /wp-content/plugins/ 底下就可以了,當然要記得去 WordPress 的後端管理介面將 WP-ImgCode mod 啟用。之後修改您目前 WordPress 使用佈景主題(theme)的 comments.php 檔,在輸入回應文章的文字區塊(textarea)及送出按鈕(submit)之間插入程式碼
即可,可以參考直角的程式碼如下圖第133行:

然後到「回應文章(comment.php)」的頁面,重新整理頁面就可以看見驗證碼了,不過要注意喔!因為修正版有增加"網站成員"不需要輸入驗證碼的功能,因此記得要登出 WordPress 的後端管理介面,才能看見驗證碼,不然使用其他的電腦試看看應該就可以囉。
在 WP-ImgCode 內有三個檔案:
- imgcode.php → 驗證碼的相關參數及設定
- wp-imgcode.php → 驗證碼在網頁上呈現的樣貌(HTML)
- sketchey.gdf → 驗證碼的字型檔
你可以自行修改參數來符合你的 Blog 設定。事實上,WP-ImgCode 的設定很多樣化,可以設定要出現的驗證碼字元及字數、設定文字及背景顏色…等等,甚至可以透過其他程式來變更驗證碼的字型(圖形),相關的說明可以參考下篇文章:
希望大家都能夠順利安裝,打造一個不受惡意廣告回文的網誌環境。
2007/09/22 補充:
有網友提出若無輸入驗證碼時,錯誤訊息會出現中文亂碼的情況,這實在是爛 IE 的問題,因為 IE 不會自動判斷文字編碼,其實只要在 IE 底下選擇「檢視 → 編碼 → Unicode(UTF-8)」就可以正常看見文字了。但是不見所有的來訪者都是這麼聰明的喔!這時候只要小小地改個程式碼,就可以一勞永逸,強迫 IE 使用 Unicode(UTF-8) 編碼。因為錯誤訊息是在 wp-imgcode.php 中,請自行修改該檔案,找到函式 function verify_code() ,再將錯誤訊息寫入以下資訊(其實就是一個完整的網頁內容啦!!)就可以啦。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>驗證碼錯誤</title>
</head>
<body>
錯誤: 請輸入正確的驗證碼。
</body>
</html>
或請參考下圖函數位置及紅框的部份,加入相關程式碼:

這樣 IE 就會強迫指定文字編碼了,中文不再出現亂碼囉。祝大家順利!
p.s. 記得要將 wp-imgcode.php 改成 UTF-8。


相關主題
13 位網友對本文章作出回應
Hello Man, 感謝,並拜讀大作了,順便幫你測試一下驗證喔。
哈哈,謝啦!看起來應該是正常運作中,沒有問題啦 ^_^
大大您好,您的程式碼有一點小失誤喔^^|||
ID); ?>
應該是
ID); ?>
'comment_form'的單引號錯了,
另外我發現若是未輸入驗證碼就送出,會出現亂碼的錯誤訊息,但是改成英文又正常了^^|||您有空幫忙一下嗎?
qoo6b 你好:
跟據你的提問我說明一下喔...
(不好意思^^||)
WP-ImgCode 修正版的下載點 斷了?
我的圖出不來是不是少裝了什麼?
ca95 您好:
本人也沒想到原載點會失效,你可以試著由本地下載。
另外,請依據本人說明安裝本外掛,字型檔 sketchey.gdf 要跟解開的檔案放在同一個資料夾下,接下來請在您的佈景主題的 comment.php 加入相關程式碼。然後請開啟 imgcode.php,設定相關的內容。
例如上面這行,就是指定字型檔的檔名,只要設定正確了,驗證碼就會出來了。
我少裝了GD...
可是現在圖出來了,數字也都有打對,
可是都一直出現 錯誤: 請輸入正確的驗證碼。
怎麼會這樣><...
我也想要像你那個有國字的該怎麼弄呢?
ca95 您好:
個人猜想有兩種可能:
(1)有可能是你自行加入的程式碼錯誤,這方面您就得自行修改一下程式。直角的建議是,在文章中「2007/09/22 補充」之後的部份,先不要做,看看程式是否會出現問題,再來找出問題所在。
(2)另一種可能是,有可能您使用的驗證碼是 5 碼,但是畫面上(圖形)只要出現 4 個字母或數字,這樣的話,當然您不管怎麼輸入都是錯誤的。請適當的修改 imgcode.php 內部的參數,調整圖形的大小。
至於「國字」的驗證碼,則是本站獨家特有的功能,目前已測試完畢,相關的教學文章預計下星期會發佈,到時候再歡迎您再回到本站瀏覽,謝謝。
有問題請再提出。
直角兄:
請問 WP-ImgCode mod 能用在一般自己用 php 寫出來的"留言板"上嗎?
要怎麼套用呀?
To 初學者:
基本上是無法直接套用的,因為 WP-ImgCode mod 是 WordPress 專用的外掛,但是你可以參考 WP-ImgCode mod 裡面的 PHP 程式,自行將程式修改並配合你的留言版就可以達到你要的效果了。
我的圖也跑不出來
上面那位說少裝GD 是甚麼呀?
有人在家嗎?
To 8591:
您好,正逢元旦假期,為了振興國內經濟,直角兄跑去東海岸消費去了^_^
ok, 回到正題,GD 是 php 的圖形處理函式庫,如果你的環境是 Windows 的話,請在修改 C:\Windows\php.ini 這個檔案,找到「;extension=php_gd.dll」或「;extension=php_gd2.dll」,將前最前面的「分號(;)」刪除,存檔。
然後重新啟動 php (或重新開機)就可以了。
寫下您的意見
請注意:請勿送出與政治、意識型態相關之發言,以免引發不必要之討論。