栏目导航
热点推荐
- 开发者必备,超实用的PHP代码片
- 提高PHP编程效率的53种方法
- PHP精华的代码收藏
- PHP.ini配置文件(中文)
- PHP如何防止注入及开发安全
- 提高PHP编程效率的53个要点
- 实际开发中可能用到的PHP的字符
- PHP无限分类的原理
- PHP验证码类代码( 最新修改,完全
- PHP判断端口是否打开的代码
- PHP网站转移实战经验之谈
- phpMyAdmin配置文件说明
阅览排行
一个漂亮的PHP验证码
www.jz123.cn 2013-12-06 来源: 站长家园 责任编辑(袁袁) 我要投递新闻
自己导入字体,可以按照自己的额需要随便修改。
01.
<?php
02.
class
Imagecode{
03.
private
$width
;
04.
private
$height
;
05.
private
$counts
;
06.
private
$distrubcode
;
07.
private
$fonturl
;
08.
private
$session
;
09.
function
__construct(
$width
= 120,
$height
= 30,
$counts
= 5,
$distrubcode
=
"1235467890qwertyuipkjhgfdaszxcvbnm"
,
$fonturl
=
"C:\Windows\Fonts\TektonPro-BoldCond.otf"
){
10.
$this
->width=
$width
;
11.
$this
->height=
$height
;
12.
$this
->counts=
$counts
;
13.
$this
->distrubcode=
$distrubcode
;
14.
$this
->fonturl=
$fonturl
;
15.
$this
->session=
$this
->sessioncode();
16.
session_start();
17.
$_SESSION
[
'code'
]=
$this
->session;
18.
}
19.
20.
function
imageout(){
21.
$im
=
$this
->createimagesource();
22.
$this
->setbackgroundcolor(
$im
);
23.
$this
->set_code(
$im
);
24.
$this
->setdistrubecode(
$im
);
25.
ImageGIF(
$im
);
26.
ImageDestroy(
$im
);
27.
}
28.
29.
private
function
createimagesource(){
30.
return
imagecreate(
$this
->width,
$this
->height);
31.
}
32.
private
function
setbackgroundcolor(
$im
){
33.
$bgcolor
= ImageColorAllocate(
$im
, rand(200,255),rand(200,255),rand(200,255));
//±³¾°ÑÕÉ«
34.
imagefill(
$im
,0,0,
$bgcolor
);
35.
}
36.
private
function
setdistrubecode(
$im
){
37.
$count_h
=
$this
->height;
38.
$cou
=
floor
(
$count_h
*2);
39.
for
(
$i
=0;
$i
<
$cou
;
$i
++){
40.
$x
=rand(0,
$this
->width);
41.
$y
=rand(0,
$this
->height);
42.
$jiaodu
=rand(0,360);
43.
$fontsize
=rand(8,15);
44.
$fonturl
=
$this
->fonturl;
45.
$originalcode
=
$this
->distrubcode;
46.
$countdistrub
=
strlen
(
$originalcode
);
47.
$dscode
=
$originalcode
[rand(0,
$countdistrub
-1)];
48.
$color
= ImageColorAllocate(
$im
, rand(40,140),rand(40,140),rand(40,140));
49.
imagettftext(
$im
,
$fontsize
,
$jiaodu
,
$x
,
$y
,
$color
,
$fonturl
,
$dscode
);
50.
51.
}
52.
}
53.
private
function
set_code(
$im
){
54.
$width
=
$this
->width;
55.
$counts
=
$this
->counts;
56.
$height
=
$this
->height;
57.
$scode
=
$this
->session;
58.
$y
=
floor
(
$height
/2)+
floor
(
$height
/4);
59.
$fontsize
=rand(30,35);
60.
$fonturl
=
"C:\Windows\Fonts\AdobeGothicStd-Bold.otf"
;
//$this->fonturl;
61.
62.
$counts
=
$this
->counts;
63.
for
(
$i
=0;
$i
<
$counts
;
$i
++){
64.
$char
=
$scode
[
$i
];
65.
$x
=
floor
(
$width
/
$counts
)*
$i
+8;
66.
$jiaodu
=rand(-20,30);
67.
$color
= ImageColorAllocate(
$im
,rand(0,50),rand(50,100),rand(100,140));
68.
imagettftext(
$im
,
$fontsize
,
$jiaodu
,
$x
,
$y
,
$color
,
$fonturl
,
$char
);
69.
}
70.
71.
72.
73.
}
74.
private
function
sessioncode(){
75.
$originalcode
=
$this
->distrubcode;
76.
$countdistrub
=
strlen
(
$originalcode
);
77.
$_dscode
=
""
;
78.
$counts
=
$this
->counts;
79.
for
(
$j
=0;
$j
<
$counts
;
$j
++){
80.
$dscode
=
$originalcode
[rand(0,
$countdistrub
-1)];
81.
$_dscode
.=
$dscode
;
82.
}
83.
return
$_dscode
;
84.
85.
}
86.
}
87.
Header(
"Content-type: image/GIF"
);
88.
$imagecode
=
new
Imagecode(160,50);
89.
$imagecode
->imageout();
1
上一篇:PHP环境安装套件:快速安装LAMP环境 下一篇:开发者必备,超实用的PHP代码片段