PHP版简易动态口令卡
WUCHA.CC是一个尚在开发中的文学网站。考虑到初期编辑分布比较广泛、编辑的操作对网站有较大的影响,故设计了网站编辑专用的动态口令卡。
同样也适用对安全性有中等要求的中小型网站、博客。
先上图,有图有真相。
连号的感觉真好 - -
设计采用PHOTOSHOP。打印选择了KUUKIE.COM(趣奇网)的个性卡片印刷服务。
趣奇网有两种规格的个性卡片。一种是名片的一半,一种和名片一样大小。
(咳咳咳咳,这里AD下趣奇网)
趣奇网是一家新兴的在线打印照片服务的网站。
你可以把你的照片等拿去印刷,也可以做些小卡片。
被我拿来打印口令卡纯属意外 :)
在互联网政策不明朗的今天,新兴网站的生存并不容易。
趣奇网的存在还是令我们告慰的,希望他们能够成长壮大。 :)
首先是制作正面图像、背景的网格。

这里要注意的是,实际上剪裁的效果看(和上面的实图对比),和趣奇网提供的PSD模板有点差距,顶部有空隙[绿色线是安全线]。

然后用这段PHP代码生成动态口令并存入数据库。
- <?php
- #error_reporting(0);
- $host = 'localhost';
- $user = 'root';
- $passwd = '';
- $db = 'dpasswd';
- mysql_connect($host,$user,$passwd);
- mysql_select_db($db);
- $query = mysql_query('select count(*) as maxID from dpasswd');
- if(!$query){ exit('could not get max id record,program exit;');}
- $tmpArr = mysql_fetch_assoc($query);
- $ID = $tmpArr['maxID']+1;
- $ID = str_pad($ID, 5, '0', STR_PAD_LEFT);
- $arrRand = array();
- for($i=0;$i<6;$i++){
- $arrRand[] = array();
- for($j=0;$j<11;$j++){
- $arrRand[$i][$j] = rand(0,9).rand(0,9);
- }
- }
- $im=imagecreatefrompng("./bg.png");
- $x = 155;
- $y = 230;
- $widthPerGrid = 74;
- $heightPerGrid= 75;
- $noFontSize = 35;
- $numFontSize = 30;
- $no_start = 'A'.$ID;
- $black = imagecolorallocate($im,0,0,0);
- #图像资源、字体大小、角度
- imagettftext($im,$noFontSize,0,200,115,$black,'tahoma.ttf',$no_start);
- for($i=0;$i<6;$i++){
- for($j=0;$j<11;$j++){
- imagettftext($im,$numFontSize,0,$x,$y,$black,'tahoma.ttf',$arrRand[$i][$j]);
- $x+=$widthPerGrid;
- }
- $x-=($widthPerGrid*11);
- $y+=$heightPerGrid;
- }
- $num = '';
- foreach($arrRand as $item){
- $num .= implode('',$item);
- }
- mysql_query("INSERT INTO dpasswd (type,num) values ('A','{$num}')");
- $card_id = mysql_insert_id();
- if(imagepng($im,$no_start.'.png')){
- echo '密保卡已经生成:',$no_start,'.png',';数据库中的ID:',$card_id;
- } else {
- echo '密保卡:',$no_start,'.png','生成失败';
- }
- DROP TABLE IF EXISTS `dpasswd`;
- CREATE TABLE `dpasswd` (
- `dpasswdID` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `type` char(2) DEFAULT NULL,
- `num` char(132) CHARACTER SET ascii NOT NULL,
- PRIMARY KEY (`dpasswdID`)
- ) ENGINE=MyISAM AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
每次刷新都会使编号+1并生成一张动态口令卡。
随机数的产生并没有用到种子等概念。
产生完毕后数据库、本地文件各存一份。
趣奇网提供了批量上传图片的功能,很快就上传完毕。需要注意的是为了方便,文字面打印正面图片,正面则放生成的口令卡图片。
最后,感谢CCTV感谢MTV感谢支持我的fans们,WUCHA is coming soon。。。。
Follow Me