最近 joomla123 常遭國外的留言機械人攻擊,本來是不以為意.但沒想到今天卻一口氣留了快 40 封信(英文),真是氣死我了.所以上網找了些資料,幫〔連絡我們〕加上圖型驗證碼(CAPTCHA).
安裝圖型驗証模組:
1.請下載 CAPTCHA 程式,這裡是簡易版(48k)及標準版(164k),我是用簡易版
2.將 CAPTCHA 解壓縮後,裡面會有個 kcaptcha 的資料夾,把整個資料夾放在jooomla 的根目錄下
3.測試一下,打入 http://站名/kcaptcha/ ,應該會看到圖型驗証碼出現,表示安裝成功 (例如:http://www.joomla123.com.tw/kcaptcha/ )
接下來要修改二個檔案:
1.打開joomla根目錄中之 /components/com_contact/contact.html.php ,第690~694行應為:
<?php echo(_EMAIL_A_COPY); ?>
</label>
<?php
}
?>
在這之後,請插入下面程式碼(只插入紅色字部份):
<!—開始增加圖型驗証碼 -->
<?php session_start(); ?><br />
<img src="/kcaptcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"
alt="Turn on pictures showing" />
<br />
<label for="contact_captcha">
請輸入驗證碼:
</label>
<br />
<input type="text" name="captcha" id="contact_captcha" value=""
size="30" maxlength="10" />
<!—結束 -->
<br />
<br />
由於中間我們有插入中文,所以存檔時要存為UTF 8的格式(用 PSPad 編輯器就有這個功能,於功能表中選〔格式/UTF 8〕,可按此下載),整段看起來應為(包含前後)
2.請打開joomla根目錄中之/components/com_contact/contact.php ,在382行附近找到
$bannedText = $mparams->get( 'bannedText', '' );
$sessionCheck = $mparams->get( 'sessionCheck', 1 );
請在之後插入下面程式碼(紅字部份)
// 插入圖型驗証碼
session_start();
if(!isset($_SESSION['captcha_keystring']) ||
$_SESSION['captcha_keystring']!==$_POST['captcha']){
unset($_SESSION['captcha_keystring']);
mosErrorAlert('請輸入正確的驗證碼');
}
unset($_SESSION['captcha_keystring']);
// 結束
// check for session cookie
if ( $sessionCheck ) {
記得,還是要用UTF 8的格式存檔.
這樣,我們就手動的為〔連絡我們〕的功能加上圖型驗証碼囉!也比較不怕垃圾信的功擊了.
範例效果如下:
註:本方法只適用 joomla 1.0.X 版
參考資料:http://physicist.phpnet.us/2007/07/06/captcha-contact-form/
建立0rz短址


文章回應