PHP之验证码类

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2016/6/20
 * Time: 14:29
 */

Class captcha{
       //验证码类
     protected $str="xaaxqwe556232assd";  //随机数
     protected $code; //验证码
     protected $length=4; //验证码长度
     protected $width=80;  //验证码宽度
     protected $height=30; //验证码高度
    protected $img;//验证码生成

    //随机数
    public  function getcode()
    {
        $len=strlen($this->str)-1;
        for($i=0;$i<4;$i++)
        {
            $this->code.=$this->str[mt_rand(0,$len)];
        }

    }

    //生成背景
    public function codeBg()
    {
        //新建一个图像
       $this->img=imagecreatetruecolor($this->width,$this->height);
        $color=imagecolorallocate($this->img,rand(1,100),rand(1,100),rand(1,100));  //红,绿,蓝
        //$back=imagecolorallocate($this->img,0,0,0);
        imagefilledrectangle($this->img,0,0,$this->width,$this->height,$color);

    }

    //生成干扰元素

    public function setLine()
    {
        //干扰点
        for($i=0;$i<1000;$i++)
        {
            $color=imagecolorallocate($this->img,rand(0,255),rand(0,255),rand(0,255));
            imagesetpixel($this->img,rand(1,99),rand(1,99),$color);
        }
//
//        //干扰线
        for($i=0;$i<5;$i++)
        {
            $color=imagecolorallocate($this->img,rand(0,255),rand(0,255),rand(0,255));
            imageline($this->img,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),$color);
        }
//
//        //干扰线

    }

    //生成元素头
    public function outHeader()
    {
        header("Content-type:image/png");
    }

    //写入验证码

    public function writeString()
    {
        $red  = imagecolorallocate ( $this->img ,  255 ,  0 ,  0 );
        imagestring($this->img,5,rand(1,15),rand(1,15),$this->code(),$red);
        //$font  =  ‘arial.ttf‘ ;
        //imagettftext ( $this->img ,  20 ,  0 ,  10 ,  20 ,  $red ,  $font ,  $this->code );
    }
  //shu

    public function png()
    {
        $this->outHeader();
        $this->codeBg();
        $this->getcode();
        $this->setLine();

        $this->writeString();
        session_start();
        $_SESSION[‘code‘]=$this->code();
        imagepng($this->img);
    }
    public function code(){
        return strtoupper($this->code);
    }

}

$ce=new captcha();
$ce->png();
var_dump($_SESSION[‘code‘]);

  测试页面

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
</head>
<?php   session_start(); ?>
<body>
    <img  title="点击刷新" src="./captcha.class.php" onclick="this.src=‘captcha.class.php?‘+Math.random();"/>
    <form action="<?php $_SERVER[‘PHP_SELF‘];  ?>" method="post">
		<input type="text" name=‘captcha‘ />
		<input type="submit"  name=‘submit‘ value="buton" />
    </form>
</body>
</html>

<?php
if($_POST[‘submit‘]){
   if($_POST[‘captcha‘]!==$_SESSION[‘code‘])
   {
   	echo "登录失败";
   }else{
   echo "成功";
   }
   }

?>

  

时间: 2024-10-12 08:59:05

PHP之验证码类的相关文章

ThinkPHP 3.2.3 加减乘法验证码类

ThinkPHP 3.2.3 自带的验证码类位于 /ThinkPHP/Library/Think/Verify.class.php,字体文件位于 /ThinkPHP/Library/Think/Verify/ 可以在 Verify.class.php 文件内进行修改,也可以单独写一个类继承自带的验证码类.如果单独写一个继承的类,可以重用父类的属性和方法,但是要注意的是父类中有一些属性和方法是私有(private)的,可以修改这些私有的属性和方法为保护(protected)的,如果不希望修改框架自

建立一个漂亮的PHP验证码类文件及调用方式

//验证码类class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子 private $code;//验证码 private $codelen = 4;//验证码长度 private $width = 130;//宽度 private $height = 50;//高度 private $img;//图形资源句柄 private $font;//指定的字体

包装一个php的验证码类

验证码是我们开发的时候经常用到的功能,所以在此本人包装了一个验证码类,应该可以作为php的类插件用,在此分享给各位博客园的读友. 实现的原理也是很简单,就是利用画布的几个元素,再加上一些字符串的获取,东凑西凑就构成了,呵呵. 这里大概写一下思路吧,其实这个类已经注释的非常清楚了,不过,个人还是在行文前啰嗦一下. 首先是关于一些函数的解释,这里的解释纯属个人体会,有什么错误的地方,还请读者指正. 1.创建画布函数:imagecreatetruecolor(w,h); 说明:用于创建一个画布. w

2、载入验证码类及$_SESSION处理

1.载入验证码类,并验证 (1)下载定义好的code验证码类,放置到resources目录下 (2) 添加路由 Route::get('/admin/code','Admin\[email protected]'); (3)添加方法 LoginController.php public function code() { $code = new \Code(); $code->make(); } 注意: 不要忘记引入Code类,不加'\',会引入App\Http\Controllers\Admi

PHP-解析验证码类--学习笔记

1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $charset = 'abcdefghjkmnprstuvwxyzABCDEFGJKMNPRSTUVWXYZ23456789'; private $code; private $codeLen = 4; private $width = 130; private $heigh = 50; private $

面向对象中的验证码类

<?php /** * 验证码类 */ class Verify { //成员属性 private $width; //宽 private $height; //高 private $verify_code; //验证码字符串 private $verify_nums; //验证码个数 private $verify_type; //验证码字符类型 private $image_type; //图片类型(JPG/PNG) private $res; //图片资源 //构造函数来执行需要初始化的成

laravel之引入验证码类

1.将验证码类文件夹放入到指定的位置,放入位置可以自定义 2.在控制器中引入验证码文件 3.在验证码文件中可以根据自己的需要,对验证码的内容进行编辑(包括背景,画线,边框,内容) 4.在入口文件中开启session 5.验证码调用 6.验证码验证

PHP编写的图片验证码类文件分享方法

适用于自定义的验证码类! <?php /* * To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/Class Image{ private $img;public $width = 85;public $h

漂亮的 PHP 验证码类

<?php //验证码类 class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';    //随机因子     private $code;                            //验证码     private $codelen = 4;                    //验证码长度     private $width = 130;