Joomla!-开源天空

2009-01-10
您所在的位置: 首页 > Joomla专栏 > 源代码分析 > Fireboard 1.0.3 验证码BUG修改过程

Fireboard 1.0.3 验证码BUG修改过程

Joomla! 开源天空  作者:joomla  2008-03-31 10:24
  • 摘要:给Fireboard论坛添加验证码!

Fireboard是Joomla!下不错的论坛,但是发展有点慢,更新的速度不够,最新的版本好像是1.0.4吧,错误还比较多。因为各种原因,我还没升级。但是因为被卖伟哥的给骚扰,没办法打开了验证码功能,在朋友的提醒下,发现运行不正常。看了一下源代码,发现其中验证码部分代码如下:

    session_start();
    $number = $_POST['txtNumber'];

也难怪不能正常运行了,还在直接操作session,坛子中有关于Joomla! 1.5 session的讨论。最后修改了一下fireboard,将验证码改掉了。验证采用了验证码插件,具体使用请参考:

如何在Joomla!组件扩展中添加验证码captcha,服务器配置篇
如何在Joomla!组件扩展中添加验证码captcha,程序修改篇

 我的fireboard修改如下:

components/com_fireboard/template/default/fb_write.html.php文件,将原262,263行验证码显示和输入的改为:

 <td align="left" valign="middle" height="35px"> <input name="word" type="text" id="word" value="" style="vertical-align:top" size="15">          
 <img src="/index.php?option=com_fbcomments&task=displaycaptcha" style="vertical-align:middle;heiht:60px"/>

然后修改components/com_fireboard/template/default/post.php文件:

将原60行之后的验证部分改为:

function displaycaptcha() {
    global $mainframe;
    $Ok = null;
    $mainframe->triggerEvent('onCaptcha_Display', array($Ok));
     if (!$Ok) {
        echo "<br/>Error displaying Captcha<br/>";
     }                  
}
function _checkCaptcha() {
    global $mainframe;
    $return = false;
    $word = JRequest::getVar('word', false, '', 'CMD');
    $mainframe->triggerEvent('onCaptcha_confirm', array($word, &$return));
    if ($return) {
        return true;
    } else return false;
}   
      if (!_checkCaptcha()) {
            JError::raiseError("403","You have entered the wrong CAPTCHA sequence. Please try again.");
            return false;
        } 

这样就可以了。

注意:要按照文章中说的安装服务器和验证码插件啊。

我没有验证最新版本的fireboard是否可以支持验证码。过两天有时间了升级一下试试。

  发表您的文章评论

您的姓名 (昵称)
标题:
评分: 很差一般较好很好
评论:
验证码:
请输入验证码