使用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 相关文章推荐
谈谈PHP语法(5)
Oct 09 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
深入解析PHP中的(伪)多线程与多进程
Jul 01 PHP
php动态添加url查询参数的方法
Apr 14 PHP
PHP开发Apache服务器配置
Jul 15 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
基于PHP制作验证码
Oct 12 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
PHP PDOStatement::bindParam讲解
Jan 30 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
laravel使用数据库测试注意事项
Apr 10 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代码
2010/08/08 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
Flask之请求钩子的实现
2018/12/23 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
Python调用C/C++的方法解析
2020/08/05 Python
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
运动会广播稿500字
2014/01/28 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
办理收楼委托书范本
2014/10/09 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python