ホームページ > バックエンド開発 > PHPチュートリアル > PHP検証コード生成プログラム code_PHPチュートリアル

PHP検証コード生成プログラム code_PHPチュートリアル

WBOY
リリース: 2016-07-13 17:11:02
オリジナル
804 人が閲覧しました

この記事では、セッションストレージとgdライブラリを使用して検証コードを生成するプログラムを紹介します。同時に、いくつかの干渉要素を追加して、単純にマシンの登録を防ぐことができます。

PHP 検証コードと画像生成プログラムは、セッション認識を使用して、現在インターネット上で流通している PHP 検証コードをわずかに改良し、さまざまなドットを追加し、デジタル カラーをランダムに表示し、4 桁の表示を制御します。プログラムは次のとおりです。 、 共有する。

新しい yz.php 検証コード生成ファイルを作成します:

注: 次のコードでは、php の GD ライブラリを開き、php.in ファイルの構成を変更し、コメントアウトされた行の前のセミコロンをキャンセルする必要があります: extension=php_gd2.dll。

代码如下 复制幣

   クラス ValidationCode
   {
    // プロパティ
    プライベート $width;
    プライベート $height;
    プライベート $codeNum;
       プライベート $image;
    プライベート $disturbColorNum;  //干扰元素数目
    プライベート $checkCode;
    関数 __construct($width=80,$height=20,$codeNum=4)
     {
     $this->width=$width;
     $this->height=$height;
     $this->codeNum=$codeNum;
     $number=床($幅*$高さ/15);
     if($number>240-$codeNum)
    {
      $this->disturbColorNum=240-$codeNum;
     }その他
      {
      $this->disturbColorNum=$number;
      }
      $this->checkCode=$this->createCheckcode();
    }
    関数getCheckCode()
    {
           $this->checkCodeを返す;
    }
    プライベート関数 createImage(){
          $this->image=imagecreatetruecolor($this->幅,$this->高さ);
    $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);
    }
    プライベート関数 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->幅),rand(-10,$this->高さ),rand(30,300),rand(20,300),55,44,$色);
     }
    }
      プライベート関数 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=フロア($this->幅/$this->コード番号)*$i+5;
     $y=rand(0,$this->高さ-15);
     imagechar($this->image,$fontsize,$x,$y,$this->checkCode{$i},$fontcolor);
    }
    それ以外
   {
     $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});
    }
    }
   }

プライベート関数 createCheckCode(){
    $code="23456789abcdefghijkmnpqrstuvwrst";
    $str="";
    for($i=0;$icodeNum;$i++)
    {
     $char=$code{rand(0,strlen($code)-1)};
     $str.=$char;
    }
    $str;
を返します    }
   プライベート関数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);
     }その他
     {
      die("PHP は画像验证码をサポートしていません");
     }
    }
        // この方法を通じて浏览器に画像を出力します
    関数 showImage($fontFace="")
    {
     //创建画像背景
            $this->createImage();
     //設置干扰元素
           $this->setDisturbColor();
     //向图像中随机画出文本
     $this->outputText($fontFace);
     //出画像
     $this->outputImage();
    }

関数 __destruct()
    {
     imagedestroy($this->image);
    }
   }
   関数 checklogin(){
        if(empty($_POST['name']))
                die( '用户名は空になれません');
    if(空($_POST['パスワード']))
     die("密码不可空");
    if($_SESSION['code']!=$_POST['vertify'])
     die("验证码输入不正确".$_SESSION['code']);
  
    $username=$_POST['name'];
    $password=md5($_POST['パスワード']);
    //检查は存在するか
         conndb($ユーザー名,$パスワード);
   }
   関数 conndb($name="",$ps=""){
        $conn=mysql_connect('localhost','root','123456');
       if(!$conn) die("数据库连接失败".mysql_error());
     mysql_select_db('5kan',$conn) または die('选择数据库失败'.mysql_error());
  mysql_set_charset('utf8',$conn);
  $sql="k_user から ID を選択します。ユーザー名 ='{$name}' およびパスワード ='{$ps}'";
  $result=mysql_query($sql) または die("SQL语错误".mysql_error());
  if(mysql_num_rows($result)>0) die("登录成功");
  else die("用户名または者密码错误");
  mysql_close($conn);
   }
    session_start();
   if(!isset($_POST['randnum']))
   {
     $code=新しい検証コード(120,20,4);
     $code->showImage("comicbd.ttf");  //页面に表示
  $_SESSION['code']=$code->getCheckCode();//保存在服务器中
   }
   それ以外
   {
    checklogin();
   }

?>


特定の呼び出し場所に移動して、次の形式を使用します: 検証する場合は、セッションの値を検証します: $_SESSION['VCODE']それ。上記のコードを少し改良して、2 つの数値を加算して合計する形式に変更することもできます

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629629.html技術記事この記事では、セッションストレージと gd ライブラリを使用して検証コードを生成するプログラムを紹介します。同時に、いくつかの干渉要素が追加され、単純にマシンの登録を防ぐことができます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート