使用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 相关文章推荐
解析argc argv在php中的应用
Jun 24 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
php对称加密算法示例
May 07 PHP
smarty模板局部缓存方法使用示例
Jun 17 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
php使用curl简单抓取远程url的方法
Mar 13 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
PHP基于PDO扩展操作mysql数据库示例
Dec 24 PHP
PHP基于swoole多进程操作示例
Aug 12 PHP
php中的依赖注入实例详解
Aug 14 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编程与应用
2006/10/09 PHP
PHP 实用代码收集
2010/01/22 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
php读取本地json文件的实例
2018/03/07 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python url 参数修改方法
2018/12/26 Python
python动态视频下载器的实现方法
2019/09/16 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
python encrypt 实现AES加密的实例详解
2020/02/20 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
门卫岗位职责
2013/11/15 职场文书
出国导师推荐信
2014/01/16 职场文书
党员批评与自我批评
2014/10/15 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
2019年思想汇报
2019/06/20 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python