使用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 相关文章推荐
提取HTML标签
Oct 09 PHP
第十三节--对象串行化
Nov 16 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
PHP临时文件的安全性分析
Jul 04 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
php基于websocket搭建简易聊天室实践
Oct 24 PHP
php的4种常用运行方式详解
Dec 22 PHP
Swoole 5将移除自动添加Event::wait()特性详解
Jul 10 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
Oct 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
全国FM电台频率大全 - 15 山东省
2020/03/11 无线电
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
python检测远程服务器tcp端口的方法
2015/03/14 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
python下载的库包存放路径
2020/07/27 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
幼师自我鉴定范文
2013/10/01 职场文书
事业单位辞职信范文
2014/01/19 职场文书
关于赌博的检讨书
2014/01/24 职场文书
客户接待方案
2014/02/26 职场文书
冬季施工防火方案
2014/05/17 职场文书
校园文化标语
2014/06/18 职场文书
会计人员演讲稿
2014/09/11 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
高一军训感想
2015/08/07 职场文书
浅谈Python数学建模之线性规划
2021/06/23 Python