<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. php語言

    一個漂亮的php驗證碼類

    時間:2025-01-10 04:25:28 php語言 我要投稿
    • 相關推薦

    一個漂亮的php驗證碼類

      編程的魅力在于可以實現想要的功能,下面小編就為大家分享一個漂亮的php驗證碼類。需要的朋友可以過來參考下,更多消息請關注應屆畢業生網。

      直接上代碼,代碼如下:

      //驗證碼類

      class ValidateCode {

      private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//隨機因子

      private $code;//驗證碼

      private $codelen = 4;//驗證碼長度

      private $width = 130;//寬度

      private $height = 50;//高度

      private $img;//圖形資源句柄

      private $font;//指定的字體

      private $fontsize = 20;//指定字體大小

      private $fontcolor;//指定字體顏色

      //構造方法初始化

      public function __construct() {

      $this->font = dirname(__FILE__).'/font/elephant.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),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);

      }

      }

      //生成線條、雪花

      private function createLine() {

      //線條

      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->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$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 doimg() {

      $this->createBg();

      $this->createCode();

      $this->createLine();

      $this->createFont();

      $this->outPut();

      }

      //獲取驗證碼

      public function getCode() {

      return strtolower($this->code);

      }

      }

      輸出實例:

      使用方法:

      1、先把驗證碼類保存為一個名為 ValidateCode.class.php 的文件;

      2、新建一個名為 captcha.php 的文件進行調用該類;

      captcha.php

      代碼如下:

      session_start();

      require './ValidateCode.class.php'; //先把類包含進來,實際路徑根據實際情況進行修改。

      $_vc = new ValidateCode(); //實例化一個對象

      $_vc->doimg();

      $_SESSION['authnum_session'] = $_vc->getCode();//驗證碼保存到SESSION中

      3、引用到頁面中,代碼如下:

      代碼如下:

      4、一個完整的驗證頁面,代碼如下:

      代碼如下:

      session_start();

      //在頁首先要開啟session,

      //error_reporting(2047);

      session_destroy();

      //將session去掉,以每次都能取新的session值;

      //用seesion 效果不錯,也很方便

      ?>

      此例為session驗證實例

      驗證碼:

      //打印上一個session;

      //echo "上一個session:".$_SESSION["authnum_session"]."

      ";

      $validate="";

      if(isset($_POST["validate"])){

      $validate=$_POST["validate"];

      echo "您剛才輸入的是:".$_POST["validate"]."

      狀態:";

      if($validate!=$_SESSION["authnum_session"]){

      //判斷session值與用戶輸入的驗證碼是否一致;

      echo "輸入有誤";

      }else{

      echo "通過驗證";

      }

      }

      ?>

    【一個漂亮的php驗證碼類】相關文章:

    仿照TP框架自帶的PHP驗證碼類10-22

    php如何實現驗證碼06-13

    php實現驗證碼制作08-12

    php驗證碼代碼怎么寫09-26

    php生成動態圖片驗證碼代碼07-23

    用php生成帶有雪花背景的驗證碼09-30

    PHP學習:PHP拼音類10-08

    PHP創建漂亮圖表的步驟06-03

    php如何在一個類中引入另外一個類09-07

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人