PHP雪花背景验证码

WBOY
Freigeben: 2016-06-23 13:17:32
Original
982 Leute haben es durchsucht

ValidateCode.class.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

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

     /**

      * 验证码类

      * @author staven

      *

      */

     class ValidateCode{

         

         private $width ;         //验证码图片的宽度

         private $height ;        //验证码图片的高度

         private $checkCode ;     //验证码字符

         private $codeNum ;       //验证码字符个数

         private $font ;          //字体

         private $fontSize ;      //字体大小

         private $fontColor ;     //字体颜色

         private $image ;         //验证码句柄

         private $charset ;       //验证字符随机因子

         

         //构造器方法初始化

         function __construct( $width =100, $height =20, $codeNum =4, $fontSize = 12){

             $this ->width = $width ;

             $this ->height = $height ;

             $this ->codeNum = $codeNum ;

             $this ->fontSize = $fontSize ;

             $this ->font = dirname( __FILE__ ) . '/font/elephant.ttf' ;

             $this ->charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789' ;      //提供随机因子

             $this ->checkCode = $this ->createCheckCode();

             

         }

         

         /* 用于输出验证码图片,并且将验证码信息写入session */

         function __toString(){

             /* 加到session中, 存储下标为code */

             $_SESSION [ "code" ] = strtoupper ( $this ->checkCode);

             $this ->outImage();

             return '' ;

         }

         

         /* 生成随机验证码字符 */

         private function createCheckCode(){

             

             for ( $i =0; $i codeNum; $i ++){

                 $this ->checkCode .= $this ->charset{rand(0, strlen ( $this ->charset)-1)};

             }

             return $this ->checkCode;

         }

         

         /* 输出验证码 */

         private function outImage(){

             $this ->getCreateImage();

             $this ->createLine();

             $this ->outputText();

             $this ->outputImage();

         }

         

          /* 生成验证码背景图片 */

         private function getCreateImage(){

             $this ->image = imagecreatetruecolor( $this ->width, $this ->height);

             $color = imagecolorallocate( $this ->image, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255));

             imagefilledrectangle( $this ->image,0, $this ->height, $this ->width,0, $color ); 

         }

         

         /* 向句柄图片中写入文字信息 */

         private function outputText(){

             $_x = $this ->width / $this ->codeNum; 

             for ( $i =0; $i codeNum; $i ++) { 

                 $this ->fontcolor = imagecolorallocate( $this ->image,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); 

                 imagettftext( $this ->image, $this ->fontSize,mt_rand(-30,30), $_x * $i +mt_rand(1,5), $this ->height / 1.4, $this ->fontColor, $this ->font, $this ->checkCode[ $i ]); 

             } 

         }

         

         /*  创建雪花图案 */

         private function createLine() {

             for ( $i =0; $i

                 $color = imagecolorallocate( $this ->image,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));

                 imageline( $this ->image,mt_rand(0, $this ->width),mt_rand(0, $this ->height),mt_rand(0, $this ->width),mt_rand(0, $this ->height), $color );

             }

             for ( $i =0; $i

                 $color = imagecolorallocate( $this ->image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

                 imagestring( $this ->image,mt_rand(1,5),mt_rand(0, $this ->width),mt_rand(0, $this ->height), '*' , $color );

             }

         }

         

         /* 生成验证码图片 */

         private function outputImage(){

             header( 'Content-type:image/png' ); 

             imagepng( $this ->image); 

             imagedestroy( $this ->image);

         }

         

         /* 销毁句柄,释放资源 */

         function __destruct() {

             imagedestroy( $this ->image);

         }

         

     }

imageCode.php

1

2

3

4

     session_start();        //开启SESSION

     require_once 'ValidateCode.class.php' ;

     echo new ValidateCode();

image.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

    

    

楠岃瘉鐮
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage