利用php实现安全代码,实现LT功能包下载,直接运行GT卡;
设计素描:秘密安全卡存储
复制代码代码如下所示:
美元->荷载->模型('admin / m_mibao);
$ =数组();
/ /生成随机坐标
rand_str美元=美元-> _rand_str(10);
ARR =阵列(美元);
为($ k = 0;$ K<strlen($ rand_str);$ K + +)
{
($ i = 1;$ i < 9;$ + +)
{
兰德=美元美元-> _rand_num(3);
分配给所有代码容器
美元美元美元rand_str ARR { } { k。美元=兰特;
}
}
{ } = 'code美元数据的序列化($ ARR); / /序列化信息存储在
数据'letter} = {美元rand_str美元;
避免重复。
虽然(真实)
{
数据'card_num} = {美元美元-> _rand_num(20);
确定重复的序列号
如果(美元-> m_mibao -> has_card_num($数据{ 'card_num ' })= = 0)
{
打破;
}
}
数据'add_time'} {美元=时间;
数据'user_id} = {美元美元的UID;
Echo $this->mibao->insert ($data);
秘密安全卡图像生成
复制代码代码如下所示:
是坐标计算
公共功能显示($ user_id)
{
美元->荷载->模型('admin / m_mibao);
信息=美元美元-> m_mibao -> get_by_uid($ user_id);
如果(emptyempty(元信息))
{
这个>(用户机密安全卡!),'admin-index);
}
美元($信息序列化代码= { 'code});
图片初始值
$ = 3;隐藏安全卡号
$高度= 332; /图片高度
宽度= 626; /图片宽度
我=新建一个真彩色图像(美元美元美元的宽度,高度);
颜色= imagecolorallocate美元(合我,229229229);
字体颜色= imagecolorallocate美元(合我,0, 0, 0);
top_rectangle_color美元= imagecolorallocate(合我,241254237);
top_letter_color美元= imagecolorallocate(合我,54126,76);
left_rectangle_color美元= imagecolorallocate(合我,243247255);
left_num_color美元= imagecolorallocate(合我,468192);
logo_str_color = imagecolorallocate美元($ IM,0,0,0);
imagefill($ IM,0,0,imagecolorallocate($ IM,255255255)); / /图片的背景颜色
$字体= '。 / / /公共苞米字体 /宋体。TTC '; / /字体
font_en美元= '。 / / /公共苞米字体 / consola。TTF '; / /英文字体
font2美元= '。 / / /公共苞米字体 /黑体。TTF '; / /顶密保卡黑
DST = imagecreatefromjpeg美元(, / / / 120公众苞米。jpg);
拷贝并合并图像的一部分(合我,DST美元,120,15,0019355100);
imageline(合我,10,72,width-10,72美元,美元的颜色);
美元=电子安全卡女士;
如果(!imagettftext(合我,100340,47,logo_str_color美元美元美元,font2,LTEXT)){
退出(错误的);
}
写卡号
$ = '1000。信息'card_num'} {美元;
($ i = 0;$ i < 7;$ + +){
P = substr(美元$,3美元,4)。;
}
$ = 40;$ y = 95;序号位置
imagettftext($ IM 0,X,Y元,美元美元颜色,字体,序列号);
imagettftext($ IM,11,0,X元+ 50,Y元,美元的颜色,font_en美元,$ P);
颜色框
Imagefilledrectangle(合我,10106,width-10128美元,美元top_rectangle_color);
Imagefilledrectangle(合我,10129,65,height-10美元,美元left_rectangle_color);
把信件和英文写在网上。
($ i = 1;$ i = 10;$ + +){
X元=我* 55 + 35 = 123美元;Y元;float_size = 11; / /字母位置参数
imagettftext(合我,float_size美元,0美元美元,X,Y,top_letter_color美元美元美元,font_en,信息'letter} { $ { I-1 }); / /写字母在英语
}
($ i = 0;$ i = 9;$ + +){
Linex =我* 55美元+ 65美元= 105美元;全部;liney2 = $ height-10; / /垂直位置参数
(我imageline美元,美元美元美元LINEX,兰妮,LINEX,liney2美元,美元的颜色); / /成线
}
写数字并填入矩阵/垂直数据下划线
对于($ = 0;$ j 8;$ + +){
$ = $ j + 1;
$ = 35;$ =($ JJ * 24)+ 123;左行数和水平位置参数
imagettftext(合我,float_size美元,0美元美元,X,Y,left_num_color美元美元美元,font_en,JJ); / /写数字的左行
($ i = 1;$ i = 10;$ + +){
float_size2美元= 11;X元= $我* 55 + 27美元美元;SY = Y; / /填写位置参数的数据矩阵
$ S =信息'letter} { {美元美元I-1 };
$ = $ j + 1;
imagettftext(合我,float_size2,0 X美元,美元,美元美元SY,字体颜色,font_en美元美元美元,代码{ }); / /写数据矩阵
}
}
对于($ = 0;$ j 10;$ + +){
line_x美元= 10;line_x2 =美元美元美元美元width-10;Y = J * 24 + 105; / /水平位置参数Y坐标数据。
imageline(IM line_x美元,美元,美元,美元line_x2,Y元,美元的颜色); / /成线
}
边框边框
imageline($ IM,10,10,width-10,10美元,美元的颜色); / /线
/ / imageline(合我,10,height-10美元,width-10美元美元美元,height-10,颜色);
imageline($ IM、10、10、10、height-10美元,美元的颜色); / /
imageline(合我,width-10,10美元,width-10美元美元美元,height-10,颜色);
生成图像
ob_clean();
页眉(内容类型:图像);
imagejpeg(合我,空,100);
销毁一图像(为我);
}
秘密安全卡验证
复制代码代码如下所示:
公共函数test1($ UID)
{
美元->荷载->模型('admin / m_users);
用户名=美元-> m_users -> SEL($ UID);
/提交验证的帖子
如果(美元-> is_post())
{
$码=美元-> m_mibao -> get_codes_by_uid($ UID);
美元($码)序列化代码=;
is_true美元=真;
foreach($ _session { } { } 'mibao'keys美元的关键)
{
如果($代码{ $ } }!= $ _post { 'values} { $关键})
{
is_true美元= false;
}
}
如果($ is_true)
{
死(谈看法);
}
其他的
{
模具(错误的);
}
}
其他的
{
视图
信息=美元美元-> m_mibao -> get_by_uid($ UID);
$ =数组();
数据'keys} = {美元美元-> m_mibao -> get_rand_keys($信息{ 'letter});
_session { } { 'mibao美元的'keys} = { } $数据'keys;
数据'uid} = {美元美元的UID;
美元->荷载->视图('test1,$data);
}
包装和下载