使用PHP实现密保卡功能实现代码<打包下载直接运行>


Posted in PHP onOctober 09, 2011

效果图:
使用PHP实现密保卡功能实现代码<打包下载直接运行>
密保卡入库

$this->load->model('admin/m_mibao'); 
$data = array(); 
//生成随机横坐标 
$rand_str = $this->_rand_str(10); 
$arr = array(); 
for($k=0;$k<strlen($rand_str);$k++) 
{ 
for ($i = 1;$i < 9;$i++) 
{ 
$rand = $this->_rand_num(3); 
//赋给所有code的容器 
$arr[$rand_str{$k} . $i] = $rand; 
} 
} 
$data['code'] = serialize($arr); //序列化后将信息入库 
$data['letter'] = $rand_str; 
//避免重复序列号 
while (TRUE) 
{ 
$data['card_num'] = $this->_rand_num(20); 
//判断序列号是否重复存在 
if($this->m_mibao->has_card_num($data['card_num']) == 0) 
{ 
break; 
} 
} 
$data['add_time'] = TIME; 
$data['user_id'] = $uid; 
echo $this->mibao->insert($data);

密保卡图片生成
//就是算坐标 
public function show($user_id) 
{ 
$this->load->model('admin/m_mibao'); 
$info = $this->m_mibao->get_by_uid($user_id); 
if(emptyempty($info)) 
{ 
$this->msg('该用户无密保卡!','admin-index'); 
} 
$codes = unserialize($info['code']); 
//图片初始值 
$bit = 3; //密保卡位数 
$height = 332; //图片高度 
$width = 626; //图片宽度 
$im = imagecreatetruecolor($width,$height); 
$linecolor = imagecolorallocate($im, 229,229,229); 
$fontcolor = imagecolorallocate($im, 0, 0, 0); 
$top_rectangle_color = imagecolorallocate($im,241,254,237); 
$top_letter_color = imagecolorallocate($im,54,126,76); 
$left_rectangle_color = imagecolorallocate($im,243,247,255); 
$left_num_color = imagecolorallocate($im,4,68,192); 
$logo_str_color = imagecolorallocate($im,0,0,0); 
imagefill($im,0,0,imagecolorallocate($im,255,255,255)); //图片背景色 
$font = './public/baomi/fonts/simsun.ttc'; //字体 
$font_en = './public/baomi/fonts/CONSOLA.TTF'; //英文字体 
$font2 = './public/baomi/fonts/simhei.ttf'; //密保卡上方黑体 
$dst = imagecreatefromjpeg("./public/baomi/120.jpg"); 
imagecopymerge($im,$dst,120,15,0,0,193,55,100); 
imageline($im,10,72,$width-10,72,$linecolor); 
$ltext = "电子密保卡"; 
if(!imagettftext($im,10,0,340,47,$logo_str_color,$font2,$ltext)) { 
exit('error'); 
} 
//写入卡号 
$b = '1000' . $info['card_num']; 
for($i=0;$i<7;$i++){ 
$p.= substr($b,3*$i,4). ' '; 
} 
$x = 40; $y = 95; //序列号位置 
imagettftext($im,10,0,$x,$y,$color,$font,'序列号'); 
imagettftext($im,11,0,$x+50,$y,$color,$font_en,$p); 
//颜色框 
imagefilledrectangle($im,10,106,$width-10,128,$top_rectangle_color); 
imagefilledrectangle($im,10,129,65,$height-10,$left_rectangle_color); 
//写入最上排英文字母及竖线 
for($i=1;$i<=10;$i++){ 
$x = $i*55+35; $y = 123; $float_size = 11; //字母位置参数 
imagettftext($im,$float_size,0,$x,$y,$top_letter_color,$font_en,$info['letter']{$i-1});//写入最上排英文字母 
} 
for($i=0;$i<=9;$i++){ 
$linex = $i*55+65; $liney = 105; $liney2 = $height-10; //竖线位置参数 
imageline($im,$linex,$liney,$linex,$liney2,$linecolor);//划入竖线 
} 
//写入竖排数字及填入矩阵数据 划横线 
for($j=0;$j<8;$j++){ 
$jj=$j+1; 
$x=35; $y=($jj*24)+123; //左排数字及横线位置参数 
imagettftext($im, $float_size, 0, $x, $y, $left_num_color, $font_en, $jj);//写入左排数字 
for($i=1;$i<=10;$i++){ 
$float_size2=11; $x = $i*55+27; $sy=$y; //填入矩阵数据位置参数 
$s = $info['letter']{$i-1}; 
$s .= $j + 1; 
imagettftext($im,$float_size2,0,$x,$sy,$fontcolor,$font_en,$codes[$s]);//写入矩阵数据 
} 
} 
for($j=0;$j<10;$j++){ 
$line_x=10; $line_x2=$width-10;$y=$j*24+105; //横线位置参数 y坐标数据同上 
imageline($im,$line_x,$y,$line_x2,$y,$linecolor);//划入横线 
} 
//外框边线 
imageline($im,10,10,$width-10,10,$linecolor);//横线 
//imageline($im,10,$height-10,$width-10,$height-10,$linecolor); 
imageline($im,10,10,10,$height-10,$linecolor);//竖线 
imageline($im,$width-10,10,$width-10,$height-10,$linecolor); 
//生成图片 
ob_clean(); 
header("Content-type: image/jpeg"); 
imagejpeg($im,null,100); 
imagedestroy($im); 
}

密保卡验证
public function test1($uid) 
{ 
$this->load->model('admin/m_users'); 
$user = $this->m_users->sel($uid); 
//post提交过来验证 
if($this->is_post()) 
{ 
$codes = $this->m_mibao->get_codes_by_uid($uid); 
$codes = unserialize($codes); 
$is_true = true; 
foreach($_SESSION['mibao']['keys'] as $key) 
{ 
if($codes[$key] != $_POST['values'][$key]) 
{ 
$is_true = false; 
} 
} 
if($is_true) 
{ 
die('正确'); 
} 
else 
{ 
die('错误'); 
} 
} 
else 
{ 
//渲染视图 
$info = $this->m_mibao->get_by_uid($uid); 
$data = array(); 
$data['keys'] = $this->m_mibao->get_rand_keys($info['letter']); 
$_SESSION['mibao']['keys'] = $data['keys']; 
$data['uid'] = $uid; 
$this->load->view('test1',$data); 
}

三水点靠木打包下载
PHP 相关文章推荐
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php+ajax实现无刷新的新闻留言系统
Dec 21 PHP
PHP随机数 C扩展随机数
May 04 PHP
PHP中多线程的两个实现方法
Oct 14 PHP
PHP云打印类完整示例
Oct 15 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
Feb 20 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
PHP实现时间轴函数代码
Oct 08 #PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 #PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 #PHP
php实现用户在线时间统计详解
Oct 08 #PHP
php 文件缓存函数
Oct 08 #PHP
php数字转汉字代码(算法)
Oct 08 #PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 #PHP
You might like
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
浅谈JavaScript的函数及作用域
2016/12/30 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
python3实现磁盘空间监控
2018/06/21 Python
python中比较两个列表的实例方法
2019/07/04 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
就业自荐书
2013/12/05 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
学生会招新策划书
2014/02/14 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android