CI自制简单验证码验证

今天自制了一个CI中的依赖SESSION验证的验证码机制,总算了解了长时间一个“心愿”,今天总算下决心解决了!

CI官方文档中的使用是将验证码传到数据库 然后结合数据库进行验证,这肯定是最为安全的,可以防止SESSION欺骗,而且可以解决不支持SESSION的浏览器进行正常验证

但是太繁琐了,于是自己想了一个通过将生成的验证码相关信息存入SESSION,登录的时候直接通过SESSION进行验证就可

这样来说比较简单,所以上代码:


控制器部分,我是把login和verifylogin做成了两个不同的function

login部分代码:

public function login(){
        
        $vals = array(
            'word' => rand(1000, 10000),
            'img_path' => './captcha/',
            'img_url' => base_url().'captcha/',
            //'font_path' => './path/to/fonts/texb.ttf',
            'img_width' => '150',
            'img_height' => 30,
            'expiration' => 7200
        );
        $cap = create_captcha($vals);
        //将验证码信息存入SESSION 别忘了控制器构造函数引入$this -> load -> library('session');
        $_SESSION["captcha_word"] = $cap["word"];
        $_SESSION["captcha_time"] = $cap["time"];
        $_SESSION["captcha_image"] = $cap["image"];
        $_SESSION["captcha_image_h"] = $cap["image"];     
        $data["captcha"] = $cap;
        
        $this -> load ->view("Admin/login",$data);
       
    }
verifylogin部分代码


if($_SESSION["captcha_word"]!=$_POST["captcha"] && (time()-$_SESSION["captcha_time"])<7200){//7200超时限制
            $res = false;
}

就可以对验证码判断并判断$res的正确性进行登录,

当然这样会发现SESSION中存储的验证码可能会被读取并解密,日后会附上MD5+SALT的相关补充。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值