使用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 相关文章推荐
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
PHP脚本数据库功能详解(上)
Oct 09 PHP
php PDO中文乱码解决办法
Jul 20 PHP
php操作JSON格式数据的实现代码
Dec 24 PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
php中文验证码实现方法
Jun 18 PHP
详细解读PHP中接口的应用
Aug 12 PHP
PHP内存使用情况如何获取
Oct 10 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
PHP addslashes()函数讲解
Feb 03 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字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python正规则表达式学习指南
2016/08/02 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
python 3.6.7实现端口扫描器
2019/09/04 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
高中运动会广播稿
2014/01/21 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
讲党性心得体会
2014/09/03 职场文书
学党史心得体会
2014/09/05 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
优秀教师先进材料
2014/12/16 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python