CodeIgniter中的Captcha代码区分大小写

时间:2013-08-22 08:57:53

标签: php codeigniter captcha case-sensitive

我在我的一个应用程序中使用CI,在这里我实现CI验证码。我使用random_string('alnum', 8)来创建大写和小写组合验证码。用户必须在此处编写完全显示在图像中的验证码;这是案例性的。在这里,我需要添加一些技巧;我想删除casesensivity,用户可以使用大写或小写填充验证码,如图所示。

这是我的验证码实现代码 -

$cap_word = random_string('alnum', 8);

$options = array(
 'word'   => $cap_word,
 'img_path'  => './captcha/',
 'img_url'   => base_url() . 'captcha/',
 'font_path'    => './fonts/custom.ttf',
 'img_width'    => 150,
 'img_height' => 30,
 'expiration' => 7200
 );

$cap = create_captcha($options);

这是我的回调函数 -

public function validate_captcha_code() {

    $cap = $this->input->post('captcha_code');
    if($cap != $cap_word) {
    $this->form_validation->set_message('validate_captcha_code', 'Wrong captcha code, Please try again.');
        return false;
    }else{
        return true;
    }
}

3 个答案:

答案 0 :(得分:1)

将验证功能更新为: 我已经使用了strtolower()

public function validate_captcha_code() {

$cap = strtolower($this->input->post('captcha_code'));
if($cap != strtolower($cap_word)) {
$this->form_validation->set_message('validate_captcha_code', 'Wrong captcha code, Please try again.');
    return false;
}else{
    return true;
 }
}

答案 1 :(得分:0)

看一下PHP的strcasecmp函数。

答案 2 :(得分:0)

您只需更新您的验证功能 -

   public function validate_captcha_code() {

    $cap = $this->input->post('captcha_code');

        if(strtolower($cap) != strtolower($cap_word) || strtoupper($cap) != strtoupper($cap_word)) {
            $this->form_validation->set_message('validate_captcha_code', 'Wrong captcha code, Please try again.');
            return false;
        }else{
            return true;
        }
}

试试这个希望大小写都适用。让我知道发生了什么。