Laravel下生成验证码的类

2025-05-27 0 49

本文实例为大家分享了Laravel生成验证码的类,供大家参考,具体内容如下

?

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
<?php

namespace App\\Tool\\Validate;

//验证码类

class ValidateCode {

private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子

private $code;//验证码

private $codelen = 4;//验证码长度

private $width = 130;//宽度

private $height = 50;//高度

private $img;//图形资源句柄

private $font;//指定的字体

private $fontsize = 20;//指定字体大小

private $fontcolor;//指定字体颜色

//构造方法初始化

public function __construct()

{

$this->font = public_path() . '/fonts/Elephant.ttf';//注意字体路径要写对,否则显示不了图片

$this->createCode();

}

//生成随机码

private function createCode()

{

$_len = strlen($this->charset) - 1;

for ($i = 0;$i < $this->codelen;++$i) {

$this->code .= $this->charset[mt_rand(0, $_len)];

}

}

//生成背景

private function createBg()

{

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

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

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

}

//生成文字

private function createFont()

{

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

for ($i = 0;$i < $this->codelen;++$i) {

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

imagettftext($this->img, $this->fontsize, mt_rand(-30, 30), $_x * $i + mt_rand(1, 5), $this->height / 1.4, $this->fontcolor, $this->font, $this->code[$i]);

}

}

//生成线条、雪花

private function createLine()

{

//线条

for ($i = 0;$i < 6;++$i) {

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

imageline($this->img, 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 < 100;++$i) {

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

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

}

}

//输出

private function outPut()

{

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

imagepng($this->img);

imagedestroy($this->img);

}

//对外生成

public function doimg()

{

$this->createBg();

$this->createLine();

$this->createFont();

$this->outPut();

}

//获取验证码

public function getCode()

{

return strtolower($this->code);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。  

原文链接:http://www.cnblogs.com/sunshenggang/p/7772307.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Laravel下生成验证码的类 https://www.kuaiidc.com/71780.html

相关文章

发表评论
暂无评论