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

[Web] CI captcha 验证码 直接输出到 img src

[复制链接]
发表于 2014-8-6 21:19:30 | 显示全部楼层 |阅读模式
本帖最后由 pcjingl 于 2014-8-6 21:30 编辑

CI 每次验证码请求都会创建新的图片文件到网站目录中,总觉得这样有些不妥,不妨试着这样修改一下:

编辑"application/controllers/welcome.php",添加"captcha"方法
PHP复制代码
    public function captcha()
    {
        $this->load->helper('captcha');
       
        $vals = array(
            //'word' => 'Random word',
            'img_path' => DATAPATH.'captcha/',
            'img_url' => base_url('data/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标签的onclick属性,大家自己修改一下吧{:soso_e101:})
HTML复制代码
 
<img id="codeimage" on-click="javascript:this.src='<?php echo site_url('welcome/captcha');?>?'+Math.random();" src="<?php echo site_url('welcome/captcha');?>" />
 
复制代码


编辑"system/helpers/captcha_helper.php",像下面一样注释并添加新代码
PHP复制代码
         /*$img_name = $now.'.jpg';
 
        ImageJPEG($im, $img_path.$img_name);
 
        $img = "<img src=\"$img_url$img_name\" width=\"$img_width\" height=\"$img_height\" style=\"border:0;\" alt=\" \" />";
 
        ImageDestroy($im);*/

       
        ob_start();
        imageJPEG($im);
        ImageDestroy($im);
        $img = ob_get_clean();
复制代码


刷新一下页面、点点验证码图片、看看保存验证码图片的文件夹,是否有变化?{:soso_e100:}


发表于 2014-8-8 14:54:34 | 显示全部楼层
最好是不要修改system目录下的文件
 楼主| 发表于 2014-8-9 11:08:52 | 显示全部楼层
aqxinzhuan 发表于 2014-8-8 14:54
最好是不要修改system目录下的文件

小改怡情,大改伤身。
发表于 2014-12-27 15:09:47 | 显示全部楼层
其实可以继承后修改,不过这个的确不错,回头试试
发表于 2015-1-22 11:24:18 | 显示全部楼层
pcjingl 发表于 2014-8-9 11:08
小改怡情,大改伤身。

建议不直接改动,而去继承然后修改,直接改动的话 版本升级会带来问题
发表于 2015-3-24 16:11:20 | 显示全部楼层
验证码我找第三方类,直接输出到src。
看到这个方法不错,学习了,
发表于 2016-12-17 08:33:30 | 显示全部楼层
老兄,我就想问下你这样做验证码真的显示出来了吗?
发表于 2016-12-17 08:35:07 | 显示全部楼层
这样根本无法显示啊,哥们?能给个回复吗,按你说的图片在视图上根本无法显示啊

本版积分规则