andyzu 发表于 2013-6-25 11:45:38

请问如何让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>



现在的问题是,首次访问,验证码图片正常访问,但是如果点击图片刷新后,就出现一个无法显示图片的红叉!
如何解决?

yibeiwennuan 发表于 2014-11-30 15:43:50

我也遇到这个问题,找了很多材料没有决解,最后参考别人的例子用ajax实现了功能
http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=11073&extra=page%3D1&page=1

Closer 发表于 2015-4-26 15:44:35

xhj8816216 发表于 2015-4-25 09:15
src获得不了最终的值

請參考 : CI 社區 - CI 驗證碼 Captcha (含點圖刷新)

xhj8816216 发表于 2015-4-25 09:14:17

$(this).css("src",src_string); 根本转换不了里面的url

Raphael 发表于 2013-6-25 14:54:55

localhost??

IvanCI 发表于 2013-6-25 15:13:52

查看地址对不对~ 为什么要image_url~ 直接输出

Raphael 发表于 2013-6-25 15:24:00

你的js沒寫好.

andyzu 发表于 2013-6-26 10:34:18

应该怎么写?大神帮帮我!

Raphael 发表于 2013-6-26 10:47:07

本帖最后由 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!

gogogo1027 发表于 2013-7-2 11:13:10

最好不用CI的验证码吧,因为验证码的值存数据库实在不是一个好的方法。
如果有memcache的话,可以考虑配合使用,没有的话就用原生的SESSION,验证码只是一个临时性的数据,存缓存,过期自动清除,省去了垃圾回收和庞大的垃圾缓存存在数据库表中。

zhongshan 发表于 2014-11-25 21:42:04

太赞了,楼主

yibeiwennuan 发表于 2014-11-30 15:43:30

我也遇到这个问题,找了很多材料没有决解,最后用ajax实现了功能
页: [1] 2
查看完整版本: 请问如何让CI的验证码支持点图片刷新?有代码