请问如何让CI的验证码支持点图片刷新?有代码
本帖最后由 andyzu 于 2013-6-25 11:53 编辑以下代码,是我在login.php 登录页面里写的三个方法:
function captcha() {
$vals = array(
'img_path' => './captcha/',
'img_url' => base_url().'captcha/',
'font_path' => './captcha/fonts/georgiai.ttf',
'img_width' => '80',
'img_height' => '28',
'expiration' => 300 );
$captcha = create_captcha($vals);
return $captcha;
}
function captcha_URL() {
$data = $this->captcha();
echo$data['imageURL'];
//这部分是我改造了captcha_helper.php文件,return array('captchaWords' => $word, 'time' => $now, 'image' => $img , 'imageURL' =>$img_url.$img_name ); 我在这个返回值里增加了 'imageURL' =>$img_url.$img_name;
//而img 我也改造成:$img = "<img src=\"$img_url$img_name\" width=\"$img_width\" height=\"$img_height\" style=\"border:0;\" alt=\"验证码\" id=\"captcha_images\" />";
//这个函数在浏览器里显示的结果为(类似) http://localhost/iHOUSER2/captcha/1372101430.3029.jpg
}
function index(){
$this->load->library('session'); //初始化session
$captcha = $this->captcha();
//把验证码的内容,保存成session
$this->session->set_userdata(array('s_captcha' => $captcha['captchaWords']));
$this->load->view("qtadmin/v_login" , $captcha);
}
我的JS代码写的是:
<script type="text/javascript">
function changeCode(){
document.getElementById('captcha_images').src ="<?php echo base_url()?>login/captcha_URL";
}
</script>
现在的问题是,首次访问,验证码图片正常访问,但是如果点击图片刷新后,就出现一个无法显示图片的红叉!
如何解决?
我也遇到这个问题,找了很多材料没有决解,最后参考别人的例子用ajax实现了功能
http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=11073&extra=page%3D1&page=1 xhj8816216 发表于 2015-4-25 09:15
src获得不了最终的值
請參考 : CI 社區 - CI 驗證碼 Captcha (含點圖刷新) $(this).css("src",src_string); 根本转换不了里面的url
localhost?? 查看地址对不对~ 为什么要image_url~ 直接输出 你的js沒寫好. 应该怎么写?大神帮帮我! 本帖最后由 Raphael 于 2013-6-26 10:48 编辑
<script>
$(document).ready(function(e) {
var src_string = "<?phpecho base_url()."login/".captcha_URL;?>";
$("#captcha_images").click(function(){
$(this).css("src",src_string);
});
});
</script>
ps. Me is not God! 最好不用CI的验证码吧,因为验证码的值存数据库实在不是一个好的方法。
如果有memcache的话,可以考虑配合使用,没有的话就用原生的SESSION,验证码只是一个临时性的数据,存缓存,过期自动清除,省去了垃圾回收和庞大的垃圾缓存存在数据库表中。 太赞了,楼主 我也遇到这个问题,找了很多材料没有决解,最后用ajax实现了功能
页:
[1]
2