php验证码

 1 <?php

 2 session_start();

 3 header('Content-Type: text/html;charset=UFT-8');

 4 header("Content-type:image/png");

 5 //定义header,声明图片文件,最好是png,无版权之扰; 

 6 //生成新的四位整数验证码

 7 $verifiability_code = '';

 8 $str = 'abcdefghijkmnpqrstuvwxyz23456789'; 

 9 

10 //定义用来显示在图片上的数字和字母;

11 $l = strlen($str); //得到字串的长度; 

12 //循环随机抽取四位前面定义的字母和数字; 

13 for($i=1;$i<=4;$i++)

14 { 

15 $num=rand(0,$l-1); 

16 //每次随机抽取一位数字;从第一个字到该字串最大长度,

17 //减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中;

18 $verifiability_code.= strtoupper($str[$num]);

19 //将通过数字得来的字符连起来一共是四位;

20 }

21 

22 //使用前先注销掉原有的数据

23 unset ($_SESSION['verifiability_code']);

24 //存入SESSION内

25 $_SESSION['verifiability_code'] = $verifiability_code;

26 

27 //其它页面只要包含了该图片

28 //生成验证码图片,

29 srand((double)microtime()*1000000);

30 $im = imagecreate(50,22);//图片宽与高; 

31 //主要用到黑白灰三种色;

32 $black = ImageColorAllocate($im, 238,238,238);

33 $white = ImageColorAllocate($im, 0,0,0);

34 $gray = ImageColorAllocate($im, 100,100,100); 

35 //将四位整数验证码绘入图片

36 imagefill($im,68,60,$gray);

37 //如不用干扰线,注释就行了;

38 $li = ImageColorAllocate($im, 255,255,255);

39 for($i=0;$i<3;$i++) 

40 {//加入3条干扰线;也可以不要;视情况而定,因为可能影响用户输入; 

41 imageline($im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),$li);

42 } 

43 //字符在图片的位置;

44 imagestring($im, 5, 10, 2, $verifiability_code, $white);

45 for($i=0;$i<90;$i++)

46 {//加入干扰象素

47 imagesetpixel($im, rand()%70 , rand()%30 , $gray);

48 }

49 ImageGIF($im);

50 ImageDestroy($im);

51 ?>

 

你可能感兴趣的:(PHP)