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

[已解决] 关于CI的captcha生成验证码有个bug,如何修正?

  [复制链接]
发表于 2011-5-24 09:28:08 | 显示全部楼层
我也碰到过类似问题,最后直接修改了它自身的辅助函数。
发表于 2011-5-28 18:00:36 | 显示全部楼层
回复 rockey329 的帖子

什么函数? 是最新版本的吧?
发表于 2011-5-28 23:00:38 | 显示全部楼层
回复 qq402717704 的帖子

2.0,看中文手册吧,那里有介绍的
发表于 2011-5-29 08:43:59 | 显示全部楼层
PHP复制代码
 
  public function captcha($refresh='0')         {                       $session_word = $this->session->userdata('captcha_word');                       if (empty($session_word) || !empty($refresh)){                          $vals = array(                                  'img_path' => './images/captcha/',                                      'img_url' => base_url().'images/captcha/',                                      'font_path' => './system/fonts/captcha.ttf',                                    'img_width' => '100',                                   'img_height' => '30',                                   'expiration' => '7200'                          );                                              $cap = create_captcha($vals);                           $data = array(                  'captcha_image'  => $cap['image'],                      'captcha_word'     => $cap['word']                      );                      $this->session->set_userdata($data);                    return $cap['image'];                   }else{                          return $this->session->userdata('captcha_image');                       }                       }
 
 
复制代码


发表于 2011-5-29 08:46:41 | 显示全部楼层
很简单,设定判断就好了。
每次刷新都把新的文件地址,以及生成的认证吗数据写入session。如果session里有认证码了,就不执行。如果没有,则执行。

设定一个参数,如果为1的时候则执行更新认证码。

之后搞一个认证码判断就好了。
发表于 2011-5-29 08:50:43 | 显示全部楼层
当然你也可以在用户执行刷新的时候去删除相关文件。但是现在服务器的硬盘都是TB级的。一个图片才占多少。就算你100万/秒的访问量好了。

一个文件4k*100万。才4个G。呵呵。1~2千G的硬盘,4G算什么哦。
发表于 2011-6-1 16:26:06 | 显示全部楼层
system/helpers/captcha_helper.php
里面
改一下
                if ($use_font == FALSE)
                {
                        $font_size = 6;
//                      $x = rand(0, $img_width/($length/3));
                        $x = 3;                        $y = 0;
                }
发表于 2011-6-2 14:00:20 | 显示全部楼层
坐标设置的不能太靠边
发表于 2011-6-28 09:24:00 | 显示全部楼层
为什么就没有一个完整的实例代码放出来呢~~~~~~这东西叫我等怎么学啊,手册里怎么还有数据库....太夸张了吧,刚学CI前面的SESSION还没完全弄熟,现在想学这个验证码,就是想看看这个验证是怎么写到SESSION中的,结果手册之中只字未提......如何学习啊   
发表于 2011-6-28 09:26:14 | 显示全部楼层
麻雀 发表于 2011-6-28 09:24
为什么就没有一个完整的实例代码放出来呢~~~~~~这东西叫我等怎么学啊,手册里怎么还有数据库....太夸张了吧 ...

我建议你不要使用那个,你就在网上随便搜索个PHP 验证码类库放到libraries下就可以使用啦

本版积分规则