PHP实现验证码功能

时间:2021-11-25 来源:未知网络 作者:996建站网

平时在浏览网页的过程中,不论是会员登录也好,提交数据也好,通常都会用到验证码验证。今天就来简单的实现一下验证码的功能。

首页如果要写验证码功能的话,我们的PHP必须有GD扩展库的支持。如果是集成安装的本地服务器环境是默认开启的,如果是单独安装的php的话,那么就要手动的去php.ini里面去开启GD库,才可以书写验证码功能。因为验证码通常是以图片的形式存在的,所以要开通GD扩展库来支持php对画图的操作。如果不知道自己有没有开启,可以使用phpinfo()这个函数去查找。看是否有下图,如果有那就证明你的php已经开启了对GD库的支持。

PHP实现验证码功能插图

那接下来我们就可以创建一个php文件,来完成验证码功能的类。

//首页创建一个类
class Captcha
{
    //创建一个验证码方法
    public function getCaptcha(){
        //首页先把要作为验证码的字母数字等组织出来
       // $string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        //然后再把0,1,l,O去掉,因为在有些字体里这几个字符很像,会让使用者分不清
        $string = '23456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ';
        //然后使用循环把取出一个4位的随机的一串字符
        $code = '';
        //我以4位字符打比方,当然如果想要多一点的话也可以,就把$i循环的次数增加到想要的位数就可以了
        for($i = 0;$i<4;$i++){
            //上面作为验证码的字符串一共有58个字符,这里用随机数来随机获取
            $ind = mt_rand(0,57);
            //用随机获取的数值作为下标来获取字符然后再添加到$code里组成一个四位的随机字符串
            $code .= $string[$ind];
        }
        //这样,验证码的就已经出来了,然后我们只要把它放到图片上就可以了
         
        //添加session存储
        //开启session机制
        session_start();
        //把验证码存储到$_SESSION中去
        $_SESSION['code'] = $code;
        
        //首页创建一块长100,宽30的画布
        $img = imagecreatetruecolor(100,30);
        //再创建一个画布的背景颜色,颜色随机,尽量淡一些的颜色
        $bg = imagecolorallocate($img,mt_rand(180,255),mt_rand(180,255),mt_rand(180,255));
        //再填充画布,这样就可以获取一块有背景颜色的画布了
        imagefill($img,0,0,$bg);
        //然后再把验证码获取的每一个字符以不同的颜色放置到画布上去组成一幅图片
        for($j=0;$j<4;$j++){
            //字体的颜色可以深一些,这样才会有别于背景颜色
            $color = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200));
            //这里关于字体的引入必须要使用绝对路径,但由于项目也许会移动,所以我们用一个相对路径,然后用
            //realpath()函数来转换成绝对路径
            imagettftext($img,mt_rand(18,26),mt_rand(-20,30),18*($j+1),26,$color,realpath('./ALGER.TTF'),$code[$j]);
        }
        //输出图片 
        header('Content-type:image/jpeg');
        imagejpeg($img);
      
        
        
    }
}

PHP实现验证码功能插图1

微信扫一扫 关注公众号

微信扫一扫 使用小程序

百度扫一扫 使用小程序