ft2k 发表于 2012-2-4 14:37:29

ci2.1/关于验证码helper

//验证码加载   
    $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位的,只改变了宽度不行,我只想要四位,怎么搞?

309090518 发表于 2012-2-4 15:46:54

应该要到helper函数里面去改吧!

Hex 发表于 2012-2-5 14:29:48

看文档这里是不能设置的,也就是说是固定的,呵呵

ci_phper_mj 发表于 2012-2-5 18:36:51

文档描述-你也可以使用自己的词库,从里面随机挑选.

wang1912 发表于 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);
   }

现在想要几位就要几位


ft2k 发表于 2012-2-6 15:04:03

本帖最后由 ft2k 于 2012-2-6 15:18 编辑

wang1912 发表于 2012-2-6 11:16 static/image/common/back.gif
//验证码加载   
    $this->load->helper('captcha');
   $vals = array(

:handshake
是的,多谢!还有一个问题就是宽度|高度,这个高度一直没找到怎么改

kamengwang 发表于 2012-2-7 17:08:10

本帖最后由 kamengwang 于 2012-2-7 17:13 编辑

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


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

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

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

真是不能理解...

Hex 发表于 2012-2-7 17:26:24

kamengwang 发表于 2012-2-7 17:08 static/image/common/back.gif
自带的验证码生成方式太悲剧了,每次都要生成和遍历一遍所有验证码的文件,比方说一个论坛发帖需要验证码,每 ...

用数据库这个没问题,Session 还可以用数据库呢,用数据库可以比较简便的解决分布式问题。
当然,性能有没有问题,要具体问题具体分析了。

kamengwang 发表于 2012-2-7 17:37:51

Hex 发表于 2012-2-7 17:26 static/image/common/back.gif
用数据库这个没问题,Session 还可以用数据库呢,用数据库可以比较简便的解决分布式问题。
当然,性能有 ...

分布式的话我个人更倾向去重写session方法,信息保存在memcache或其他内存缓存里,毕竟一个站点需要分布式的时候,数据库资源更显紧张了...

Hex 发表于 2012-2-7 18:18:00

kamengwang 发表于 2012-2-7 17:37 static/image/common/back.gif
分布式的话我个人更倾向去重写session方法,信息保存在memcache或其他内存缓存里,毕竟一个站点需要分布式 ...

你的是其中一个解决方案,用数据库也是一个解决方案,有时候解决方案的选择要考虑很多情况,不可避免的要做某些折中,呵呵
页: [1] 2
查看完整版本: ci2.1/关于验证码helper