PHP驗證碼類執行個體

來源:互聯網
上載者:User

 這篇文章主要介紹了一個好用的PHP驗證碼類執行個體,有需要的朋友可以參考一下

分享一個好用的php驗證碼類,包括調用樣本。說明:如果不適用指定的字型,那麼就用imagestring()函數,如果需要遇到指定的字型,就要用到imagettftext()函數。字型的位置在C盤下Windows/Fonts. 參考了網上的php 產生驗證碼的方法,以及php 圖片驗證碼和php 中文驗證碼的產生方法。用到了PHP GD庫的相關知識。 1,產生驗證碼的類 VerificationCode.class.php 代碼如下:<?php      class VerificationCode{          private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789";  //隨機因子          private $code;  //驗證碼          private $codelen=4; //驗證碼長度          private $width=110; //寬度          private $height=30; //高度          private $img;   //映像資源控制代碼          private $font;  //制定字型          private $fontSize=25;   //字型大小          private $fontColor; //字型顏色          public function __construct(){              $this->font="CALIBRIZ.TTF";          }          //產生驗證碼          private function createCode(){              $len=strlen($this->charset)-1;              for ($i = 0; $i < $this->codelen; $i++) {                  $this->code .= $this->charset[mt_rand(0,$len)];              }          }          //產生背景          private function createBg(){              $this->img=imagecreatetruecolor($this->width,$this->height);              $color = imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));              imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);          }          //產生文字          private function createFont(){              $x=$this->width/$this->codelen;              for ($i = 0; $i < $this->codelen; $i++) {                  $this->fontColor=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));                  imagettftext($this->img,$this->fontSize,mt_rand(-30,30),$i*$x+mt_rand(1,5),$this->height/1.4,$this->fontColor,$this->font,$this->code[$i]);  // www.jbxue.com                //imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor);              }          }          //產生線條、雪花          private function createDisturb(){              for ($i = 0; $i < 6; $i++) {                  $color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));                  imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$color);              }              for ($i = 0; $i < 100; $i++) {                  $color=imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));                  imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);              }          }          //輸出          private function outPut(){              header("Content-Type:image/png");              imagepng($this->img);              imagedestroy($this->img);          }          public function showCode(){              $this->createBg();              $this->createCode();              $this->createDisturb();              $this->createFont();              $this->outPut();          }          //擷取驗證碼          public function getCode(){              return strtolower($this->code);          }      }  ?>  code.php  代碼如下:<?php      session_start();      require_once 'VerificationCode.class.php';      $code=new VerificationCode();      $_SESSION['code']=$code->getCode();      $code->showCode();  ?>   驗證碼:<input type="text" name="code" /><img src="code.php" onclick="javascript:this.src='code.php?time='+Math.random();" /> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.