使用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查询域名状态whois的类
Nov 25 PHP
php MsSql server时遇到的中文编码问题
Jun 11 PHP
php foreach 参数强制类型转换的问题
Dec 10 PHP
php下将多个数组合并成一个数组的方法与实例代码
Feb 03 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 PHP
php用ini_get获取php.ini里变量值的方法
Mar 04 PHP
php操作路径的经典方法(必看篇)
Oct 04 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
Apr 17 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获取程序执行的时间
2013/06/09 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
splice slice区别
2006/10/09 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
javascript中this的四种用法
2015/05/11 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
[01:03:27]NAVI vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
Python类继承和多态原理解析
2020/02/05 Python
Ajax和javascript的区别
2013/07/20 面试题
销售员自我评价怎么写
2013/09/19 职场文书
政风行风评议整改方案
2014/09/15 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
学生保证书格式
2015/02/27 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
三下乡活动心得体会
2016/01/23 职场文书
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏