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

[HELP] 请问如何让CI的验证码支持点图片刷新?有代码

[复制链接]
发表于 2013-6-25 11:45:38 | 显示全部楼层 |阅读模式
本帖最后由 andyzu 于 2013-6-25 11:53 编辑

以下代码,是我在login.php 登录页面里写的三个方法:
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代码写的是:
JS复制代码
 
<script type="text/javascript">  
      function changeCode(){  
           document.getElementById('captcha_images').src ="<?php echo base_url()?>login/captcha_URL";  
      }  
  </script>
 
复制代码



现在的问题是,首次访问,验证码图片正常访问,但是如果点击图片刷新后,就出现一个无法显示图片的红叉!
如何解决?
发表于 2014-11-30 15:43:50 | 显示全部楼层
我也遇到这个问题,找了很多材料没有决解,最后参考别人的例子用ajax实现了功能
http://codeigniter.org.cn/forums ... page%3D1&page=1
发表于 2015-4-26 15:44:35 | 显示全部楼层
发表于 2015-4-25 09:14:17 | 显示全部楼层
$(this).css("src",src_string); 根本转换不了里面的url
发表于 2013-6-25 14:54:55 | 显示全部楼层
localhost??
发表于 2013-6-25 15:13:52 | 显示全部楼层
查看地址对不对~ 为什么要image_url~ 直接输出
发表于 2013-6-25 15:24:00 | 显示全部楼层
你的js沒寫好.
 楼主| 发表于 2013-6-26 10:34:18 | 显示全部楼层
应该怎么写?大神帮帮我!
发表于 2013-6-26 10:47:07 | 显示全部楼层
本帖最后由 Raphael 于 2013-6-26 10:48 编辑
JS复制代码
<script>
$(document).ready(function(e) {
        var src_string = "<?php  echo base_url()."login/".captcha_URL;?>";
    $("#captcha_images").click(function(){
                        $(this).css("src",src_string);
                });
});
</script>
复制代码


ps. Me is not God!
发表于 2013-7-2 11:13:10 | 显示全部楼层
最好不用CI的验证码吧,因为验证码的值存数据库实在不是一个好的方法。
如果有memcache的话,可以考虑配合使用,没有的话就用原生的SESSION,验证码只是一个临时性的数据,存缓存,过期自动清除,省去了垃圾回收和庞大的垃圾缓存存在数据库表中。
发表于 2014-11-25 21:42:04 | 显示全部楼层
太赞了,楼主
发表于 2014-11-30 15:43:30 | 显示全部楼层
我也遇到这个问题,找了很多材料没有决解,最后用ajax实现了功能

本版积分规则