CI自制简单验证码验证

来源:互联网 发布:python hashlib 编辑:程序博客网 时间:2024/06/03 00:27

今天自制了一个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