文档章节

PHP生成图片验证码

DrChenXX
 DrChenXX
发布于 11/15 23:41
字数 419
阅读 4
收藏 0
PHP

PHP生成图片验证码

分为两个方法函数

<?php
/**
 * PHP生成图片验证码
 * Class VerifyImage
 */
class VerifyImage
{
    // 生成随机字串
    private $verifyCode;
    // 图片对象
    private $image;

    /**
     * todo:生成随机验证码
     * @param int $type 类型 【1】纯数字,【2】纯字母,【3】数字加字母
     * @param int $length
     * @return bool|string
     */
    public function createCode($type = 3, $length = 5)
    {
        if ($type == 1) {
            $verifyCode = implode('', range(0, 9));
        } elseif ($type == 2) {
            $verifyCode = implode('', array_merge(range('a', 'z'), range('A', 'Z')));
        } else {
            $verifyCode = implode('', array_merge(range('a', 'z'), range(0, 9), range('A', 'Z')));
        }

        //判断生成字符是否符合要求
        if (strlen($verifyCode) < $length) {
            return false;
        }
        //打乱字符串
        $verifyCode = str_shuffle($verifyCode);
        $this->verifyCode = substr($verifyCode, 0, $length);
        return $this->verifyCode;
    }

    /**
     * todo:加入字符,生成图片,并加入干扰线,干扰素
     * @param int $width 图片宽度
     * @param int $height 图片高度
     */
    public function createImage($width = 80, $height = 30)
    {
        $verifyCode = $this->verifyCode;
        $image      = imagecreatetruecolor($width, $height);

        //白色背景
        $white = imagecolorallocate($image, 255, 255, 255);
        //字体颜色
        $fontStyle = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));;
        imagefill($image, 0, 0, $white);
        // 使用默认字体,无法修改文字大小
        // imagestring($image, 5, 10, 10, $verifyCode, $fontStyle);
        // 导入自定义字体,修改文字大小
        imagettftext($image, 24, 0, 5, 20, $fontStyle, '../microsofthimalaya.ttf', $verifyCode);
        //加入干扰点
        for ($i = 0; $i < 80; $i++) {
            $color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
            imagesetpixel($image, rand(0, $width), rand(0, $height), $color);
        }
        //干扰线
        for ($i = 0; $i < 5; $i++) {
            $color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
            imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $color);
        }
        //输出图片
        header("Content-type: image/png");
        imagepng($image);
        //释放资源
        imagedestroy($image);
    }
}

?>

实例

$VerifyImage = new VerifyImage();
$code = $VerifyImage->createCode();
$_SESSION['$VerifyCode'] = $code;
$VerifyImage->createImage();

© 著作权归作者所有

共有 人打赏支持
DrChenXX
粉丝 8
博文 47
码字总数 15682
作品 0
金华
程序员
私信 提问
Minho/php-captcha

php-captcha 简单的php验证码库。 PHP生成验证码图片 PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中。PHP生成验证码的大致流程有: 1、产生一张p...

Minho
2017/01/15
0
0
【代码实现】PHP生成各种随机验证码

文章来源:PHP开发学习门户 (自行开发的个人网站) 验证码在WEB应用中非常重要,通常用来防止用户恶意提交表单,如恶意注册和登录、论坛恶意灌水等。本文将通过实例讲解使用PHP生成各种常见...

PHP开发学习门户
2014/10/07
0
0
PHP 画图应用 验证码 柱状图

Title: PHP 画图应用 验证码 柱状图 Author: MoreWindows Blog: http://blog.csdn.net/MoreWindows KeyWord: PHP 验证码 柱状图 imagefilledarc 阅读本文之前,推荐先参阅姊妹篇《PHP 画图基...

彭博
2012/04/12
118
0
PHP 画图应用 验证码 柱状图

Title: PHP 画图应用 验证码 柱状图 Author: MoreWindows Blog: http://blog.csdn.net/MoreWindows KeyWord: PHP 验证码 柱状图 imagefilledarc 阅读本文之前,推荐先参阅姊妹篇《PHP 画图基...

长平狐
2012/12/10
110
0
PHP制作数字、字母型验证码及其工作原理剖析

准备: 使用PHP生成验证码图片,需要PHP的GD模块,GD扩展库用于处理图像。所以先去检查你的服务器使用的PHP版本是否开启GD模块,你可以使用PHP内置函数phpinfo()去检查,至于如何去做就不在这...

小飞侠_Kobe
2016/09/29
82
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
37分钟前
12
3
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
6
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部