用户
 找回密码
 入住 CI 中国社区
搜索
楼主: justdoit
收起左侧

[库 Library] 提供一个CI的验证码类(只需两步就能实现)

  [复制链接]
发表于 2012-6-28 11:08:55 | 显示全部楼层
请问这里面的路径怎么设置?还有code是放在system\libraries 里面么?
 楼主| 发表于 2012-6-29 11:16:39 | 显示全部楼层
什么路径?code就放到application/libraries 里面,剩下的就按照我说的步骤做就行
 楼主| 发表于 2012-6-29 11:32:17 | 显示全部楼层
本帖最后由 justdoit 于 2012-7-4 13:27 编辑

给一个详细的步骤吧:
1:下载之后,解压。并重命名为captcha_code.php
2:复制captcha_code.php,放入到application/libraries 里面
3:控制器welcome.php中
function yzm()
{
  $conf['name']='yzm'; //作为配置参数
  $this->load->library('captcha_code',$conf);
  $this->captcha_code->show();
$yzm_session=$this->session->userdata('yzm');//将验证码放在了缓存中
}
function login(){
  $this->load->view('login');
}

4:视图view下的login.php中:
<a href="javascript:reloadCode();"><img src="<?php echo site_url(welcome/yzm');?>" name="checkCodeImg" id="checkCodeImg" border="0" /></a>
JS代码部分:
function reloadCode() {
var dom = document.getElementById("checkCodeImg");
  dom.src = "<?php echo site_url('welcome/yzm');?>?str=" + Math.random();
}
5:请求地址:http://localhost/CodeIgniter21/index.php/welcome/login 则显示验证码
1.jpg

6:点击验证码,则跟着变化
希望这次能帮助到你。
发表于 2012-7-4 10:05:31 | 显示全部楼层
reloadCode()  这个函数分享一下啊
 楼主| 发表于 2012-7-4 13:28:13 | 显示全部楼层
红色部分为我重新编辑的,包含了reloadCode()这个函数,你可以看看
发表于 2012-7-5 10:19:28 | 显示全部楼层
楼主 验证码已经显示出来了 但是不会验证啊~

怎么验证呢

控制器
PHP复制代码
function yzm()
        {
                $conf['name']='yzm'; //作为配置参数
                $this->load->library('captcha_code',$conf);
                $this->captcha_code->show();
                $yzm_session=$this->session->userdata('yzm');//将验证码放在了缓存中
        }
 
复制代码


视图
HTML复制代码
<img id='code_img' onclick='this.src=this.src+"/"+Math.random()' src='<?php echo site_url('admin/login/yzm')?>'><br /><a href="javascript:document.getElementById('code_img').src='<?php echo site_url('admin/login/yzm')."/"?>'+Math.random();void(0);">单击更换验证码</a>
复制代码


控制器
PHP复制代码
 
function do_post()
                {
                        $username = $this->input->post('username',true);
                        $password = $this->input->post('password',true);
                        $code = $this->input->post('code');
                       
                        if($username && $password)
                        {
                                if($code == $this->session->userdata('yzm '))
                                {
                                        $admin = $this->user_mdl->get_full_user_by_username( $username );
                                        if($admin)
                                        {
                                                if( $admin->password == md5($password) )
                                                {
                                                        $this->session->set_userdata('uid',$admin->uid);
                                                        $this->session->set_userdata('username',$admin->username);
                                                       
                                                        $id = $admin->uid;
                                                        $data['lastlogip'] = $this->session->userdata('ip_address');
                                                        $data['lastlogtime'] = now();
                                                        $this->user_mdl->edit_user($id,$data);
                                                       
                                                       
                                                        $this->_message('登录成功','admin/index',true);
                                                }
                                                else
                                                {
                                                        $this->_message('密码不正确','admin/login/index',true);
                                                }
                                        }
                                        else
                                        {
                                                $this->_message('不存在的用户','admin/login/index',true);
                                        }
                                }
                                else
                                {
                                        $this->_message('验证码不正确!','admin/login/index',true);
                                }
                        }
                        else
                        {
                                $this->_message('用户名、密码、验证码不能为空','admin/login/index',true);
                        }
                       
                }
 
 
复制代码

点评

大哥,我的怎么不显示,帮个忙吧  发表于 2012-8-17 20:17
发表于 2012-7-5 10:20:43 | 显示全部楼层
if($code == $this->session->userdata('yzm '))

这样判断不对呢?
发表于 2012-7-5 21:21:03 | 显示全部楼层
支持
 楼主| 发表于 2012-7-6 09:34:38 | 显示全部楼层
tlerbao 发表于 2012-7-5 10:20
if($code == $this->session->userdata('yzm '))

这样判断不对呢?

判断的方法就是你那样判断的。确定你的输入验证码的文本框的name为 'code'.若不对,你那里报的什么错误?
发表于 2012-7-6 14:27:20 | 显示全部楼层
justdoit 发表于 2012-7-6 09:34
判断的方法就是你那样判断的。确定你的输入验证码的文本框的name为 'code'.若不对,你那里报的什么错误? ...

确认我的input name 就是code  错误直接走我的message方法了 就是说if $code == $this->session->userdata("yzm")没成立 else 就直接信息提示页面 验证码错误了~

本版积分规则