时间:2021-07-01 10:21:17 帮助过:5人阅读
- <br>$this->load->model('admin/m_mibao'); <br>$data = array(); <br>//生成随机横坐标 <br>$rand_str = $this->_rand_str(10); <br>$arr = array(); <br>for($k=0;$k<strlen($rand_str);$k++) <br="">{ <br>for ($i = 1;$i < 9;$i++) <br>{ <br>$rand = $this->_rand_num(3); <br>//赋给所有code的容器 <br>$arr[$rand_str{$k} . $i] = $rand; <br>} <br>} <br>$data['code'] = serialize($arr); //序列化后将信息入库 <br>$data['letter'] = $rand_str; <br>//避免重复序列号 <br>while (TRUE) <br>{ <br>$data['card_num'] = $this->_rand_num(20); <br>//判断序列号是否重复存在 <br>if($this->m_mibao->has_card_num($data['card_num']) == 0) <br>{ <br>break; <br>} <br>} <br>$data['add_time'] = TIME; <br>$data['user_id'] = $uid; <br>echo $this->mibao->insert($data); <br> <br>密保卡图片生成 <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>//就是算坐标 <br>public function show($user_id) <br>{ <br>$this->load->model('admin/m_mibao'); <br>$info = $this->m_mibao->get_by_uid($user_id); <br>if(emptyempty($info)) <br>{ <br>$this->msg('该用户无密保卡!','admin-index'); <br>} <br>$codes = unserialize($info['code']); <br>//图片初始值 <br>$bit = 3; //密保卡位数 <br>$height = 332; //图片高度 <br>$width = 626; //图片宽度 <br>$im = imagecreatetruecolor($width,$height); <br>$linecolor = imagecolorallocate($im, 229,229,229); <br>$fontcolor = imagecolorallocate($im, 0, 0, 0); <br>$top_rectangle_color = imagecolorallocate($im,241,254,237); <br>$top_letter_color = imagecolorallocate($im,54,126,76); <br>$left_rectangle_color = imagecolorallocate($im,243,247,255); <br>$left_num_color = imagecolorallocate($im,4,68,192); <br>$logo_str_color = imagecolorallocate($im,0,0,0); <br>imagefill($im,0,0,imagecolorallocate($im,255,255,255)); //图片背景色 <br>$font = './public/baomi/fonts/simsun.ttc'; //字体 <br>$font_en = './public/baomi/fonts/CONSOLA.TTF'; //英文字体 <br>$font2 = './public/baomi/fonts/simhei.ttf'; //密保卡上方黑体 <br>$dst = imagecreatefromjpeg("./public/baomi/120.jpg"); <br>imagecopymerge($im,$dst,120,15,0,0,193,55,100); <br>imageline($im,10,72,$width-10,72,$linecolor); <br>$ltext = "电子密保卡"; <br>if(!imagettftext($im,10,0,340,47,$logo_str_color,$font2,$ltext)) { <br>exit('error'); <br>} <br>//写入卡号 <br>$b = '1000' . $info['card_num']; <br>for($i=0;$i<7;$i++){ <br>$p.= substr($b,3*$i,4). ' '; <br>} <br>$x = 40; $y = 95; //序列号位置 <br>imagettftext($im,10,0,$x,$y,$color,$font,'序列号'); <br>imagettftext($im,11,0,$x+50,$y,$color,$font_en,$p); <br>//颜色框 <br>imagefilledrectangle($im,10,106,$width-10,128,$top_rectangle_color); <br>imagefilledrectangle($im,10,129,65,$height-10,$left_rectangle_color); <br>//写入最上排英文字母及竖线 <br>for($i=1;$i<=10;$i++){ <br>$x = $i*55+35; $y = 123; $float_size = 11; //字母位置参数 <br>imagettftext($im,$float_size,0,$x,$y,$top_letter_color,$font_en,$info['letter']{$i-1});//写入最上排英文字母 <br>} <br>for($i=0;$i<=9;$i++){ <br>$linex = $i*55+65; $liney = 105; $liney2 = $height-10; //竖线位置参数 <br>imageline($im,$linex,$liney,$linex,$liney2,$linecolor);//划入竖线 <br>} <br>//写入竖排数字及填入矩阵数据 划横线 <br>for($j=0;$j<8;$j++){ <br>$jj=$j+1; <br>$x=35; $y=($jj*24)+123; //左排数字及横线位置参数 <br>imagettftext($im, $float_size, 0, $x, $y, $left_num_color, $font_en, $jj);//写入左排数字 <br>for($i=1;$i<=10;$i++){ <br>$float_size2=11; $x = $i*55+27; $sy=$y; //填入矩阵数据位置参数 <br>$s = $info['letter']{$i-1}; <br>$s .= $j + 1; <br>imagettftext($im,$float_size2,0,$x,$sy,$fontcolor,$font_en,$codes[$s]);//写入矩阵数据 <br>} <br>} <br>for($j=0;$j<10;$j++){ <br>$line_x=10; $line_x2=$width-10;$y=$j*24+105; //横线位置参数 y坐标数据同上 <br>imageline($im,$line_x,$y,$line_x2,$y,$linecolor);//划入横线 <br>} <br>//外框边线 <br>imageline($im,10,10,$width-10,10,$linecolor);//横线 <br>//imageline($im,10,$height-10,$width-10,$height-10,$linecolor); <br>imageline($im,10,10,10,$height-10,$linecolor);//竖线 <br>imageline($im,$width-10,10,$width-10,$height-10,$linecolor); <br>//生成图片 <br>ob_clean(); <br>header("Content-type: image/jpeg"); <br>imagejpeg($im,null,100); <br>imagedestroy($im); <br>} <br> <br>密保卡验证 <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>public function test1($uid) <br>{ <br>$this->load->model('admin/m_users'); <br>$user = $this->m_users->sel($uid); <br>//post提交过来验证 <br>if($this->is_post()) <br>{ <br>$codes = $this->m_mibao->get_codes_by_uid($uid); <br>$codes = unserialize($codes); <br>$is_true = true; <br>foreach($_SESSION['mibao']['keys'] as $key) <br>{ <br>if($codes[$key] != $_POST['values'][$key]) <br>{ <br>$is_true = false; <br>} <br>} <br>if($is_true) <br>{ <br>die('正确'); <br>} <br>else <br>{ <br>die('错误'); <br>} <br>} <br>else <br>{ <br>//渲染视图 <br>$info = $this->m_mibao->get_by_uid($uid); <br>$data = array(); <br>$data['keys'] = $this->m_mibao->get_rand_keys($info['letter']); <br>$_SESSION['mibao']['keys'] = $data['keys']; <br>$data['uid'] = $uid; <br>$this->load->view('test1',$data); <br>} <br> <br>脚本之家打包下载 </li></ol></pre></li></ol></pre></strlen($rand_str);$k++)>