验证码获取不到,显示不出,不存数据库,修改字符个数
本帖最后由 chenxue4076 于 2014-10-20 10:53 编辑原文地址:http://blog.windigniter.com/2014/10/codeigniter-captcha/1.当然是显示不出验证码的问题, 如果按照文档类似这种代码$vals = array( 'img_path' =>'/uploads/captcha/', 'img_url' => base_url('uploads/captcha').'/', 'img_width' => 100, 'img_height' => 40, 'expiration' => 300);$cap = create_captcha($vals);发现无法获取cap的值,或者说返回的值是false, 可能原因是
[*]确保img_path,img_url不为空
[*]确保img_path是个正确路径,这里填写相对路径可能会返回空
[*]img_path必须可写,windows服务器不存在这个问题
[*]GD库没有启用
个人这里出现问题是因为img_path写的相对路径,改成绝对路径就返回正确的值了。
代码如下$vals = array( 'img_path' =>dirname(BASEPATH).'/uploads/captcha/', 'img_url' => base_url('uploads/captcha').'/', 'img_width' => 100, 'img_height' => 40, 'expiration' => 300);$cap = create_captcha($vals);如果有值但是不显示看是不是img_url少了“/”。2.captcha存入数据库,我看官方文档里面说使用数据库存储,在获取的时候,使用字符串和IP再加过期判断,个人觉得这里很有问题, 首页用户主动刷新验证码的时候,数据库里面的旧验证码是肯定没有过期的,这个时候如果用户不是输入新的,仍然输入旧的这里仍能够验证通过,当然如果你说用户如果能识别出旧的就不刷新了,我这个顾虑是多余的,也是有道理。我这里只是提出问题。3.如果不想存入数据库,可以选择存入session或者cookie,这样反而简单很多,你根本不用去写入,查询和删除那些记录。只要将 里面word的值记录下来就行了。4.如果闲验证码里面的字符个数过多,1.直接修改这个helper辅助文件,或者重写下,保存成MY_captcha_helper.php 也是可以的。
htaccess里添加RewriteRule ^(.*)$ index.php/$1 试试
参考 http://codeigniter.org.cn/user_guide/general/urls.html
或者在htaccess里边补充一个uploads免过滤 我也遇到了同样的问题,如下
编辑"application/controllers/welcome.php",添加"captcha"方法
public function captcha()
{
$this->load->helper('captcha');
$vals = array(
//'word' => 'Random word',
'word' => 'Random word',
'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 $cap['word'] OR Set COOKIE
// TO DO..
header('Content-Type: image/jpeg');
echo $cap['image'];
}
////////////////////////////////////////
编辑"application/views/welcome_message.php",添加"img"标签
<img id="codeimage" on-click="javascript:this.src='<?php echo site_url('welcome/captcha');?>?'+Math.random();" src="<?php echo site_url('welcome/captcha');?>"
为什么显示不出来图片啊?为什么显示不出来图片啊?为什么显示不出来图片啊?为什么显示不出来图片啊?
在application同级目下建有captcha目录,里面有图片生成,就是在<img id="codeimage" on-click="javascript:this.src='<?php echo site_url('welcome/captcha');?>?'+Math.random();" src="<?php echo site_url('welcome/captcha');?>"显示不出来
site_url('welcome/captcha');
这个生成的 URL 放浏览器地址栏执行,也有图片生成
页:
[1]