如何用 php实现验证码

藏色散人
发布: 2023-03-10 10:26:01
原创
2944 人浏览过

php实现验证码的方法:首先创建绘制验证码类,代码如“class Captcha {...}”;然后绘制图片页面;接着设置表单页面;最后创建好验证页面即可。

如何用 php实现验证码

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

PHP 实现验证码

绘制验证码类

width = $width; $this->height = $height; // 创建图像对象 $this->image = imagecreatetruecolor($width, $height); // 创建验证码 $this->generateCaptchaCode(); } public function __destruct() { // 销毁图像对象 imagedestroy($this->image); } public function paint() { // 绘制背景 $this->paintBackground(); // 绘制验证码 $this->paintText(); // 绘制干扰 $this->paintDirty(); } public function output() { // 设置头部为PNG图片 header('Content-Type: image/png'); // 输出到浏览器 imagepng($this->image); } public function code() { return $this->code; } private function paintBackground() { // 背景颜色设置为白色 $color = imagecolorallocate($this->image, 255, 255, 255); // 填充背景 imagefill($this->image, 0, 0, $color); } private function paintText() { // 遍历验证码,一个字符一个字符地绘制 for ($i = 0; $i < strlen($this->code); ++$i) { $fontsize = 6; $color = imagecolorallocate($this->image, rand(0,50), rand(0,50), rand(0,50)); $x = ($i * 100 / self::CODE_LENGTH) + rand(5, 10); $y = rand(5, 10); imagestring($this->image, $fontsize, $x, $y, $this->code[$i], $color); } } private function paintDirty() { // 绘制点 for ($i = 0; $i < self::DOT_COUNT; ++$i) { // 点的颜色 $pointcolor = imagecolorallocate($this->image, rand(100,200), rand(100,200), rand(100,200)); // 画点 imagesetpixel($this->image, rand(1,99), rand(1,29), $pointcolor); } // 绘制线条 for ($i = 0; $i < self::LINE_COUNT; $i++) { // 线的颜色 $linecolor = imagecolorallocate($this->image, rand(100,200), rand(100,200), rand(100,200)); // 画线 imageline($this->image, rand(1,$this->width-1), rand(1,29), rand(1,99), rand(1,29), $linecolor); } } private function generateCaptchaCode() { // 从备选字符串中随机选取字符 for ($i = 0; $i < self::CODE_LENGTH; ++$i) { $len = strlen(self::$CANDIDATES); $pos = rand(0, $len - 1); $ch = self::$CANDIDATES[$pos]; $this->code .= $ch; } } private $image = NULL; // 图像对象 private $code = ""; // 验证码 private $width = 0; // 图像长度 private $height = 0; // 图像宽度 } ?>
登录后复制

绘制图片页面

code(); // 将验证码存入Session $captcha->paint(); // 绘制 $captcha->output(); // 输出 ?>
登录后复制

推荐学习:《PHP视频教程

表单页面

       提交页面  
验证码:
登录后复制

验证页面

      验证页面 
登录后复制

以上是如何用 php实现验证码的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!