Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

限制 SMF 的驗證碼只輸入前四碼
post by tommy @ 03 十一月, 2011 12:02

最近發現之前用的 Join Check 方式, 似乎新的 bot 已經有能力處理了, 所以... 就再改一下驗證碼的檢查方式. 採用的是不管原本顯示幾碼的驗證碼, 但是只要求使用者輸入前四碼.

在 Sources/Subs-Editor.php 的 do_test 那一段, 改成這樣子:

/*
// default method
if ($thisVerification['show_visual'] && (empty($_REQUEST[$verificationOptions['id'] . '_vv']['code']) || empty($_SESSION[$verificationOptions['id'] . '_vv']['code']) || strtoupper($_REQUEST[$verificationOptions['id'] . '_vv']['code']) !== $_SESSION[$verificationOptions['id'] . '_vv']['code']))
$verification_errors[] = 'wrong_verification_code';
*/

// my modified method, only first 4 char if length > 4
if ($thisVerification['show_visual']) {
if (empty($_REQUEST[$verificationOptions['id'] . '_vv']['code']) || empty($_SESSION[$verificationOptions['id'] . '_vv']['code']))
$verification_errors[] = 'wrong_verification_code';
else {
$vv_1 = $_REQUEST[$verificationOptions['id'] . '_vv']['code'];
$vv_2 = substr($_SESSION[$verificationOptions['id'] . '_vv']['code'], 0, 4);
if (strtoupper($vv_1) !== $vv_2)
$verification_errors[] = 'wrong_verification_code';
}
}

然後在語言檔的 $txt['visual_verification_description'] 加上只要求輸入前四碼的說明.

這樣子處理後, 這一星期註冊成功的數量大幅減少, 看起來有一定的效果了.

當然... 依據你自己的需求, 不一定要前四碼, 自己可以決定上頭那個 substr() 的動作要怎麼處理, 反正只要正確告知使用者如何輸入就可以了.

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
迴響

  

Bad Behavior 已經阻擋了 68 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS