看到很多说验证码的,我来分享下我的方法
原先做验证码都是用第三方的,后来发现好像CI有验证码类,就研究了下,其实也很简单首先建立一个公共类common(验证码多处使用,放到公共类里方便),建立验证码的方法,直接输入图片
lass Common extends CI_Controller {
/**
公共功能
*/
/**验证码**/
public function captcha()
{
$this->load->helper('captcha');
$this->load->helper('url');
$this->load->library('session');
$vals = array(
//'word' => 'Random word',
'img_path'=> './captcha/',//目录需要可写属性
'img_url' => base_url().'captcha/',
'font_path' =>'/xxx/font.ttf',//使用服务器绝对路径,建议使用外部字体,不然字体大小不能定义
'img_width' => '95',//宽高根据自身项目调整
'img_height' => 40,
'expiration' => 60,//一般来说60秒够了
'word_length' => 4,
'font_size' => 22,
'img_id' => 'Imageid',
'pool' => '23456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ',//我把1iol0OLI全部删除了,太反人类了
'colors' => array(
'background' => array(255, 255, 255),
'border' => array(255, 255, 255),
'text' => array(0, 0, 0),
'grid' => array(15, 136, 235)
)
);
$cap = create_captcha($vals);//创建验证码
$word= $cap['word'];
$this->session->set_userdata('captcha', $word);//把字符存储到session里
$fileres = file_get_contents(base_url().'captcha/'.$cap['time'].'.jpg');//读取生成的图片
header('Content-type: image/jpeg'); //定义图片
echo $fileres;
}
}
前端直接访问地址
<div class="group-ipt verify">
<input type="text" name="verify" id="verify" class="ipt" placeholder="输入验证码" required>
<img src="<?php echo site_url('common/captcha');?>" class="imgcode">
</div>
然后再写一段点击刷新的JS
$('.imgcode').hover(function(){
layer.tips("看不清?点击更换", '.verify', {
time: 6000,
tips:
})
},function(){
layer.closeAll('tips');
}).click(function(){
$(this).attr('src','<?php echo site_url('common/captcha');?>');
});
完美!
先收藏了,应该以后会用到,多谢;P 收藏了
页:
[1]