使用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和ACCESS写聊天室(四)
Oct 09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
PHP使用PHPMailer发送邮件的简单使用方法
Nov 12 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
PHP引用返回用法示例
May 28 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
PHP大神的十大优良习惯
Sep 14 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 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
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
初识Node.js
2014/09/03 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
js实现时钟定时器
2020/03/26 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
实践Vim配置python开发环境
2018/07/02 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
python常用运维脚本实例小结
2020/02/14 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
python实现批量转换图片为黑白
2020/06/16 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
人力资源求职信
2014/05/25 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
放假通知范文
2015/04/14 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
手残删除python之后的补救方法
2021/06/26 Python