zoukankan      html  css  js  c++  java
  • 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 "成功";
       }
       }
    
    
    
    ?>
    

      

  • 相关阅读:
    ASP.NET 概述
    用vs调试项目页面无样式
    eniac世界第二台计算机
    汇编语言
    操作系统发展史
    网站架构发展
    简单分布式系统构建知识
    Android常用adb命令
    USB 3.0规范中译本 第4章 超高速数据流模型
    ECMAScript 6 &ECMAScript 5(在线手册)
  • 原文地址:https://www.cnblogs.com/mengluo/p/5608673.html
Copyright © 2011-2022 走看看