实例介绍
【实例简介】直接运行 各个目录下的 validateCode.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 | <?php class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789' ; //随机因子 public $code ; //验证码 private $codelen ; //验证码长度 private $width ; //宽度 private $height ; //高度 private $img ; //图形资源句柄 private $font ; //指定的字体 private $fontsize ; //指定字体大小 //构造方法初始化 public function __construct ( $width = 130, $height = 50, $codelen = 4, $fontsize = 20) { $this ->font = './Elephant.ttf' ; //注意字体路径要写对,否则显示不了图片 $this ->codelen = $codelen ; $this ->height = $height ; $this ->width = $width ; $this ->fontsize = $fontsize ; $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 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 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 outPut() { header( 'Content-type:image/png' ); imagepng( $this ->img); imagedestroy( $this ->img); } //对外生成 public function doimg() { $this ->createBg(); $this ->createLine(); $this ->createFont(); $this ->outPut(); } } ?> |
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论