<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            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

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看