资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

怎么使用php实现验证码

这篇文章主要介绍怎么使用php实现验证码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、服务器托管、等保安全、私有云建设等企业级互联网基础服务,咨询热线:18980820575

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

本文操作环境: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实现验证码
地址分享:http://cdkjz.cn/article/ghiscp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220