您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 锡林郭勒分类信息网,免费分类信息发布

php验证码生成程序代码_PHP教程

2024/3/10 1:08:44发布12次查看
本文章给大家介绍利用session存储与gd库一并生成验证码程序,同时会加入一些干扰元素,这样就可以简单的防机器注册了,下面我来给各位同学介绍介绍。
php验证码并生成图片程序,采用了session识别,稍微改进了一下目前网络上流传的php验证码,加入杂点,数字颜色随机显示,控制4位数字显示;话不多说了,程序如下,分享出来。
新建yz.php验证码生成文件:
注意:以下代码需要打开php的gd库,修改php.in文件的配置,把已经注释掉的行之前的分号取消即可:extension=php_gd2.dll。
 代码如下 复制代码
width=$width;
     $this->height=$height;
     $this->codenum=$codenum;
     $number=floor($width*$height/15);
     if($number>240-$codenum)
    {
      $this->disturbcolornum=240-$codenum;
     }else
      {
      $this->disturbcolornum=$number;
      }
      $this->checkcode=$this->createcheckcode();
    }
    function getcheckcode()
    {
           return $this->checkcode;
    }
    private function createimage(){
          $this->image=imagecreatetruecolor($this->width,$this->height);
    $backcolor=imagecolorallocate($this->image,rand(225,255),rand(225,255),rand(255,255));
    imagefill($this->image,0,0,$backcolor);
    $border=imagecolorallocate($this->image,0,0,0);
    imagerectangle($this->image,0,0,$this->width-1,$this->height-1,$border);
    }
    private function setdisturbcolor(){
     for($i=0;$idisturbcolornum;$i++){
      $color=imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
     imagesetpixel($this->image,rand(1,$this->width-2),rand(1,$this->height-2),$color);
     }
     for($i=0;$i     {
                  $color=imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
      imagearc($this->image,rand(-10,$this->width),rand(-10,$this->height),rand(30,300),rand(20,300),55,44,$color);
     }
    }
      private function outputtext($fontface=){
    for($i=0;$icodenum;$i++)
    {
     $fontcolor=imagecolorallocate($this->image,rand(0,128),rand(0,128),rand(0,128));
    if($fontface==)
   {
     $fontsize=rand(3,5);
     $x=floor($this->width/$this->codenum)*$i+5;
     $y=rand(0,$this->height-15);
     imagechar($this->image,$fontsize,$x,$y,$this->checkcode{$i},$fontcolor);
    }
    else
   {
     $fontsize=rand(12,16);
     $x=floor(($this->width-8)/$this->codenum)*$i+8;
     $y=rand($fontsize,$this->height-8);
     imagettftext($this->image,$fontsize,rand(-45,45),$x,$y,$fontcolor,$fontface,$this->checkcode{$i});
    }
    }
   }
   private function createcheckcode(){
    $code=23456789abcdefghijkmnpqrstuvwrst;
    $str=;
    for($i=0;$icodenum;$i++)
    {
     $char=$code{rand(0,strlen($code)-1)};
     $str.=$char;
    }
    return $str;
   }
   private function outputimage()
    {
    if(imagetypes()&img_gif)
     {
       header(content-type:image/gif);
        imagepng($this->image);
     }else if(imagetypes()&img_jpg)
     {
        header(content-type:image/jpeg);
        imagepng($this->image);
     }else if(imagetypes()&img_png)
     {
        header(content-type:image/png);
      imagepng($this->image);
     }else if(imagetypes()&img_wbmp){
                 header(content-type:image/vnd.wap.wbmp);
     imagepng($this->image);
     }else
     {
      die(php不支持图片验证码);
     }
    }
        //通过该方法向浏览器输出图像
    function  showimage($fontface=)
    {
     //创建图像背景
            $this->createimage();
     //设置干扰元素
           $this->setdisturbcolor();
     //向图像中随机画出文本
     $this->outputtext($fontface);
     //输出图像
     $this->outputimage();
    }
    function __destruct()
    {
     imagedestroy($this->image);
    }
   }
   function checklogin(){
        if(empty($_post['name']))
                die( '用户名不能为空');
    if(empty($_post['password']))
     die(密码不能为空);
    if($_session['code']!=$_post['vertify'])
     die(验证码输入不正确.$_session['code']);
$username=$_post['name'];
    $password=md5($_post['password']);
    //检查是否存在
         conndb($username,$password);
   }
   function conndb($name=,$ps=){
        $conn=mysql_connect('localhost','root','123456');
       if(!$conn) die(数据库连接失败.mysql_error());
     mysql_select_db('5kan',$conn) or die('选择数据库失败'.mysql_error());
  mysql_set_charset('utf8',$conn);
  $sql=select id from k_user where  username='{$name}' and password='{$ps}';
  $result=mysql_query($sql) or die(sql语句错误.mysql_error());
  if(mysql_num_rows($result)>0)  die(登录成功);
  else  die(用户名或者密码错误);
  mysql_close($conn);
   }
    session_start();
   if(!isset($_post['randnum']))
   {
     $code=new validationcode(120,20,4);
     $code->showimage(comicbd.ttf);  //显示在页面
  $_session['code']=$code->getcheckcode();//保存在服务器中
   }
   else
   {
    checklogin();
   }
?>
到具体调用的地方,用这样的形式:就可以了;验证的时候验证session:$_session['vcode']的值就可以了。还可以对以上代码稍微改进,改成两个数字相加求和的形式
http://www.bkjia.com/phpjc/629629.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/629629.htmltecharticle本文章给大家介绍利用session存储与gd库一并生成验证码程序,同时会加入一些干扰元素,这样就可以简单的防机器注册了,下面我来给各位...
锡林郭勒分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录