views: 2162 times
超大字體(180%)放大字體(130%)原始字體(100%)
最近的 SPAM 有點嚴重,所以想說做一個 comment verify 的功能。但是,要做成 plugin 卻遇到了一個問題,就是我的 verify code 傳不進去。我不知道是什麼樣的問題,所以拋出來給大家研究一下。

首先這個 plugin 需要 listener event 叫做 AddingComment,它的作用是當留言的動作在進行的時候,先呼叫這個 listener 所 fireEvent 的函式。這個函式的作用就是檢查 verify code 是否正確。產生這個 verify code 的函式並不難,就只是利用 php + GD Library 產生一個動態的圖片。

這個 function 我依照 EAS plugin 的方式做了一個類似的:

函式分為兩個,一個是 Verify_AddingComment 從 event 中提取 $target, $mother,而 $mother 則是從 comment 的表單中提取欄位的數值出來。依照 common.js 的函式敘述來看,它是如此提取數值的。

程序:common.js,行數:1067~1070 行。


再來依照 EAS 的 plugin 來看:


那麼原理就很簡單了,由 EAS 來看,它是提取 $mother 中的欄位數值,然後由 EAS_Call() 來做檢查,檢查完之後若非 SPAM 則傳回 true,這個地方應該是有點漏洞所以被攻破了。

問題來了,我在樣版中增加了 verifycode 的欄位,但是使用 $mother 卻提取不到數值,換句話說,$mother['verifycode'] 這個數值是 null,不管我怎麼傳都一樣。所以我完全搞不懂它是怎麼傳這些東西的,可能,得寫信到官方去問了。

關於樣板的地方,要在留言的地方加入這些程序:
在 article 的部分加入:

在 guestbook 的部分加入:


檔案放在這裡給大家下載,有興趣的人研究看看囉!

創用 CC 授權
Creative Commons License
本創作適用 姓名標示-非商業性-禁止改作 3.0 創用 CC 授權,台灣並依循所適用的授權條款。

Bookmarks  HEMiDEMi  Technorati  Del.icio.us  Digg  funP  Yahoo!  Furl
Writer profile
author image
偏執與強迫症的患者,算不上是無可救藥,只是我已經遇上我的良醫了。
Posted by hina

Trackback URL : http://hina.ushiisland.net/blog/hinablue/trackback/502

Leave your greetings.

  1. 档案已经被我转移到http://textcube.com.cn

    2008/03/15 12:22 [ Permalink : Modify/Delete : Reply ]
[登入][OpenID是?]