PHP版简易动态口令卡

PHP版简易动态口令卡

WUCHA.CC是一个尚在开发中的文学网站。考虑到初期编辑分布比较广泛、编辑的操作对网站有较大的影响,故设计了网站编辑专用的动态口令卡。
同样也适用对安全性有中等要求的中小型网站、博客。

先上图,有图有真相。

大小: 229.54 K
尺寸: 500 x 375
浏览: 4 次
点击打开新窗口浏览全图

大小: 269.6 K
尺寸: 500 x 375
浏览: 0 次
点击打开新窗口浏览全图

大小: 258.18 K
尺寸: 500 x 375
浏览: 0 次
点击打开新窗口浏览全图

大小: 268.42 K
尺寸: 500 x 338
浏览: 8 次
点击打开新窗口浏览全图

大小: 184.3 K
尺寸: 500 x 278
浏览: 0 次
点击打开新窗口浏览全图

连号的感觉真好 - -
设计采用PHOTOSHOP。打印选择了KUUKIE.COM(趣奇网)的个性卡片印刷服务。
趣奇网有两种规格的个性卡片。一种是名片的一半,一种和名片一样大小。

 (咳咳咳咳,这里AD下趣奇网)

趣奇网是一家新兴的在线打印照片服务的网站。

你可以把你的照片等拿去印刷,也可以做些小卡片。

被我拿来打印口令卡纯属意外 :)

在互联网政策不明朗的今天,新兴网站的生存并不容易。

趣奇网的存在还是令我们告慰的,希望他们能够成长壮大。 :)

 

首先是制作正面图像、背景的网格。 

大小: 17.76 K
尺寸: 200 x 137
浏览: 13 次
点击打开新窗口浏览全图 大小: 9.69 K
尺寸: 200 x 137
浏览: 7 次
点击打开新窗口浏览全图
这里要注意的是,实际上剪裁的效果看(和上面的实图对比),和趣奇网提供的PSD模板有点差距,顶部有空隙[绿色线是安全线]。
大小: 28.2 K
尺寸: 200 x 137
浏览: 9 次
点击打开新窗口浏览全图

然后用这段PHP代码生成动态口令并存入数据库。

PHP代码
  1. <?php   
  2. #error_reporting(0);   
  3. $host = 'localhost';   
  4. $user = 'root';   
  5. $passwd = '';   
  6. $db = 'dpasswd';   
  7. mysql_connect($host,$user,$passwd);   
  8. mysql_select_db($db);   
  9.   
  10. $query = mysql_query('select count(*) as maxID from dpasswd');   
  11. if(!$query){ exit('could not get max id record,program exit;');}   
  12. $tmpArr = mysql_fetch_assoc($query);   
  13. $ID = $tmpArr['maxID']+1;   
  14. $ID = str_pad($ID, 5, '0', STR_PAD_LEFT);   
  15.   
  16. $arrRand = array();   
  17. for($i=0;$i<6;$i++){   
  18.     $arrRand[] = array();   
  19.     for($j=0;$j<11;$j++){   
  20.         $arrRand[$i][$j] = rand(0,9).rand(0,9);   
  21.     }   
  22. }   
  23.   
  24. $im=imagecreatefrompng("./bg.png");   
  25. $x = 155;   
  26. $y = 230;   
  27. $widthPerGrid = 74;   
  28. $heightPerGrid= 75;   
  29. $noFontSize = 35;   
  30. $numFontSize = 30;   
  31.   
  32. $no_start = 'A'.$ID;   
  33. $black = imagecolorallocate($im,0,0,0);   
  34.   
  35. #图像资源、字体大小、角度   
  36. imagettftext($im,$noFontSize,0,200,115,$black,'tahoma.ttf',$no_start);   
  37. for($i=0;$i<6;$i++){   
  38.     for($j=0;$j<11;$j++){   
  39.         imagettftext($im,$numFontSize,0,$x,$y,$black,'tahoma.ttf',$arrRand[$i][$j]);   
  40.         $x+=$widthPerGrid;   
  41.     }   
  42.     $x-=($widthPerGrid*11);   
  43.     $y+=$heightPerGrid;   
  44. }   
  45. $num = '';   
  46. foreach($arrRand as $item){   
  47.     $num .= implode('',$item);   
  48. }   
  49. mysql_query("INSERT INTO dpasswd (type,num) values ('A','{$num}')");   
  50. $card_id = mysql_insert_id();   
  51. if(imagepng($im,$no_start.'.png')){   
  52.     echo '密保卡已经生成:',$no_start,'.png',';数据库中的ID:',$card_id;   
  53. else {   
  54.     echo '密保卡:',$no_start,'.png','生成失败';   
  55. }   
SQL代码
  1. DROP TABLE IF EXISTS `dpasswd`;   
  2. CREATE TABLE `dpasswd` (   
  3.   `dpasswdID` int(10) unsigned NOT NULL AUTO_INCREMENT,   
  4.   `type` char(2) DEFAULT NULL,   
  5.   `num` char(132) CHARACTER SET ascii NOT NULL,   
  6.   PRIMARY KEY (`dpasswdID`)   
  7. ) ENGINE=MyISAM AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;  

每次刷新都会使编号+1并生成一张动态口令卡。
随机数的产生并没有用到种子等概念。
产生完毕后数据库、本地文件各存一份。

趣奇网提供了批量上传图片的功能,很快就上传完毕。需要注意的是为了方便,文字面打印正面图片,正面则放生成的口令卡图片。

最后,感谢CCTV感谢MTV感谢支持我的fans们,WUCHA is coming soon。。。。 

Tags: 动态口令卡

« 上一篇 | 下一篇 »

梵高先生

…我晕  这个设计,太安全了吧-. -
太强大,我内牛满面.
背面设计很好看,怪不得官方都要你ad.
看起来包装和印刷都不错,原来我的也到了只是快递记录没有即时更新而已.
我一直以为你是准备用meettea做域名的,换成wucha.cc了,为啥?
还有51和大巴被新网咔嚓的事你都知道了吧?太BT了...

Post on 2010, January 5, 8:10 PM 1

Post on 2010, January 5, 8:21 PM 2

梵高先生

不行,太强大  必须贰次围观.这整个一魔兽世界啊~

猫猫旁白:"我,从asp动态网站开发学起,又跳入了php和python的圈子.现在,XX部和OO部竟敢阻挡我自我创业和新站上线,真是自寻死路."
"你们这是自寻死路~"(双手持香蕉状ing)

o∩_∩o

PS:纱布ucweb,又害我提交空值  擦!

Post on 2010, January 5, 8:23 PM 3

2娃还是那么始终如一的2啊,咩哈哈

4+6+5,饶头算了好久。

Post on 2010, January 18, 6:17 PM 4

shiny

@肉肉
肉大总管大驾光临。。。

Post on 2010, January 18, 10:12 PM 5

梵高先生

!!!
肉丸来了~

Post on 2010, January 19, 7:09 PM 6

字母大叔

我靠…… 忒强了吧…… 难不成你还往外寄?
电子口令卡+编辑手抄 不就OK了吗~~还节省成本  - -、

Post on 2010, February 2, 11:50 AM 7

字母大叔

嗯  我应该填网址的……

Post on 2010, February 2, 11:51 AM 8

shiny

@字母大叔
做品牌,和adobecs4的站不是一套路滴。

Post on 2010, February 2, 12:00 PM 9

字母大叔

哎哟喂~~~~我顶你!

Post on 2010, February 18, 9:23 PM 10


Comment (require):