用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5591|回复: 14
收起左侧

[已解决] ci2.1/关于验证码helper

  [复制链接]
发表于 2012-2-4 14:37:29 | 显示全部楼层 |阅读模式
//验证码加载   
    $this->load->helper('captcha');
     $vals = array(
         'img_path' => './yzm/',
         'img_url' => 'http://localhost/yzm/',
         'img_width' => 50,
         'img_height' => 30,
         'expiration' => 60*2
         );     
    $cap = create_captcha($vals);
echo $cap;
=====================
默认验证码长度是8位的,只改变了宽度不行,我只想要四位,怎么搞?
发表于 2012-2-4 15:46:54 | 显示全部楼层
应该要到helper函数里面去改吧!
发表于 2012-2-5 14:29:48 | 显示全部楼层
看文档这里是不能设置的,也就是说是固定的,呵呵
发表于 2012-2-5 18:36:51 | 显示全部楼层
文档描述-你也可以使用自己的词库,从里面随机挑选.
发表于 2012-2-6 11:16:37 | 显示全部楼层
本帖最后由 wang1912 于 2012-2-6 11:25 编辑

//验证码加载   
    $this->load->helper('captcha');
     $vals = array(
         'img_path' => './yzm/',
         'img_url' => 'http://localhost/yzm/',
         'img_width' => 50,
         'img_height' => 30,
         'expiration' => 60*2,
         'wordlen' =>4 //几位看着办就可以了
         );     
    $cap = create_captcha($vals);
echo $cap;
captcha_helper.php 中修改如下:

  $defaults = array('word' => '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200, 'wordlen' => 4 设置个默认位数);

找到此处修改一下
$pool = '023456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ';
   $str = '';
   for ($i = 0; $i < $wordlen; $i++)
   {
    $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
   }

现在想要几位就要几位


评分

参与人数 2威望 +8 收起 理由
justdoit + 3 很给力!
Hex + 5 必须加分了。。。

查看全部评分

 楼主| 发表于 2012-2-6 15:04:03 | 显示全部楼层
本帖最后由 ft2k 于 2012-2-6 15:18 编辑
wang1912 发表于 2012-2-6 11:16
//验证码加载   
    $this->load->helper('captcha');
     $vals = array(


是的,多谢!还有一个问题就是宽度|高度,这个高度一直没找到怎么改
发表于 2012-2-7 17:08:10 | 显示全部楼层
本帖最后由 kamengwang 于 2012-2-7 17:13 编辑

自带的验证码生成方式太悲剧了,每次都要生成和遍历一遍所有验证码的文件,比方说一个论坛发帖需要验证码,每次浏览帖子,会生成一个验证码图片文件,还要去遍历所有已经生成的图片文件,来验证是否过期,如果过期,则删除,一共好多次磁盘IO啊,没做过大型网站,不知道对服务器性能会产生啥样的影响...


而且 手册里居然会让保存验证数据到数据库:"为了在提交表单时用到验证,你需要将create_captcha()生成的结果保存到数据库。这样,当用户提交表单时,你就可以验证数据库里是否有数据或是否准确。"

然后验证的时候首先删除过期数据.

详见:辅助函数参考->CAPTCHA 辅助函数

真是不能理解...
发表于 2012-2-7 17:26:24 | 显示全部楼层
kamengwang 发表于 2012-2-7 17:08
自带的验证码生成方式太悲剧了,每次都要生成和遍历一遍所有验证码的文件,比方说一个论坛发帖需要验证码,每 ...

用数据库这个没问题,Session 还可以用数据库呢,用数据库可以比较简便的解决分布式问题。
当然,性能有没有问题,要具体问题具体分析了。
发表于 2012-2-7 17:37:51 | 显示全部楼层
Hex 发表于 2012-2-7 17:26
用数据库这个没问题,Session 还可以用数据库呢,用数据库可以比较简便的解决分布式问题。
当然,性能有 ...

分布式的话我个人更倾向去重写session方法,信息保存在memcache或其他内存缓存里,毕竟一个站点需要分布式的时候,数据库资源更显紧张了...
发表于 2012-2-7 18:18:00 | 显示全部楼层
kamengwang 发表于 2012-2-7 17:37
分布式的话我个人更倾向去重写session方法,信息保存在memcache或其他内存缓存里,毕竟一个站点需要分布式 ...

你的是其中一个解决方案,用数据库也是一个解决方案,有时候解决方案的选择要考虑很多情况,不可避免的要做某些折中,呵呵

本版积分规则