PHP实现变色验证码的方法

来源:不言 发布时间:2018-12-05 15:51:48 阅读量:915

这篇文章主要介绍了关于PHP实现变色验证码的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

验证码想必大家都有见到过吧,在本文为大家介绍下PHP如何实现变色验证码,感兴趣的朋友可以参考下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

<?php

header("Content-type: image/png,charset='utf-8'");

$im = imagecreatetruecolor(400, 30);

//白色

$white = imagecolorallocate($im, 255, 255, 255);

//红色

$red = imagecolorallocate($im, 255, 0, 0);

//黑色

$black=imagecolorallocate($im, 0, 0, 0);

//绿色

$green=imagecolorallocate($im, 0, 255, 0);

//蓝色

$blue=imagecolorallocate($im, 0, 0, 255);

$color_arr=array($green,$blue,$red);

$color=array_rand($color_arr);

$text = '我靠这验证码太变态啦';

$textlen=iconv_strlen($text,'utf-8');//计算字符串长度

//随机截取两个字符,变色显示

$p1=rand(1,$textlen)-1;

while(($p2=rand(1,$textlen)-1)==$p1);

$w1=iconv_substr($text,$p1,1,'utf-8');

$w2=iconv_substr($text,$p1,1,'utf-8');

//字体文件 (PS:T不错的php Q扣峮:276167802,验证:csl)

$font = 'simkai.ttf';

imagefilledrectangle($im, 0, 0, 399, 29, $white);

for($i=0;$i<$textlen;$i++)

{

if($i==$p1||$i==$p2)

{

imagettftext($im, 15, 0, 20*($i-1)+20, 20, $color_arr[$color], $font, iconv_substr($text,$i,1,'utf-8'));

}

else

{

imagettftext($im, 15, 0, 20*($i-1)+20, 20, $black, $font, iconv_substr($text,$i,1,'utf-8'));

}

}

imagepng($im);

imagedestroy($im);

?>

验证码中的字符并不是同一种颜色,让用户输入指定颜色的验证码,这样安全性会更好的。


标签: PHP
分享:
评论:
你还没有登录,请先