升級到3.15版的mt,每天都刪除100封以上的Spam-Comments,讓阿醜不得不痛定思痛尋找解決之道,在不會用blacklist(技術力不足)下選擇了S-code這個外掛,利用隨機數字的驗證方式進行迴響,希望能有效阻止Spam-Comments大軍的入侵(MT魂完全燃燒)
時程:
在參考了原作者JAMES SENG'S的Solution for comments spams,以及薄荷的Anti-Spam of Blog Comments、罐頭的防制發廣告機器人的檢核碼,從4月4號(兒童節)開始進行行動,4號當天完全被擊沉、5號一直陷入3.x及2.x的comments模版那個正確的迷思中,6號下午5點總算有一點點小成績出現,整個project事件算告一段落。
方式:
1.下載scode-0.1c.tar.gz最新版本,解開壓縮後會有readme、scode.pl、SCode.pm、scodetest.cgi四個檔案,請先打開README看使用方式。
2.檢查伺服器是否有支援perl的GD模組
3.編輯SCode.pm檔案,設定暫存資料夾的路徑(官方預設是temp/),這個要注意的是這個資料夾的層級是要和你的www資料(或是public_html)同一層,並且確定資料夾的權限是可以寫入的(官方推薦改成755)
4.將SCode.pm上傳到lib/MT/
5.將mt-scode.cgi上傳到plugins/,記得權限要改成755
6.將scode.pl上傳到plugins/
7.沒有灌blacklist外掛的,請用lib/MT/App/的Comments.pm。有用過blacklist的請到cgi-bin/extlib/jayallen /MTBlPost.pm。在上述兩個檔案中尋找
if (!$q->param('text')) { return $app->handle_error($app->translate("Comment text is required.")); }
之後加上以下段落
# # SecurityCode hack start # require MT::SCode; my $code = $q->param('code'); my $scode = $q->param('scode'); my $sscode = MT::SCode::scode_get($code); if ($scode ne $sscode) { return $app->handle_error($app->translate( "Wrong or missing Security Code.")); } MT::SCode::scode_delete($code); MT::SCode::scode_create($code); # # Security hack ends #
8.將迴響相關模版修改
Individual Entry Template
Comment Listing Template
Comment Preview Template
Comment Error Template
這裡是我苦手的地方,不知道要用3.x還是2.x的模版
9.另外使用3.X要注意的是要修改lib/MT/Template/Context.pm,修改內容我不確定,所以請看readme。
以上,希望大家都能夠成功。
恭喜!
print () 的問題還存在嗎?
果然還存在, 留言一送出就看到了 :)
Sorry 了, 這問題我就沒遇過, 不清楚原因是什麼.
還是感謝CK大大的回應^O^
恭喜 :)
補充一點
後來我和周立軒決定不用官方文件中暫存檔的命名方式,也就是不設定資料夾,問題就解決了@@|||
以上