亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

既簡單又安全的PHP驗證碼 附調用方法
來源:易賢網 閱讀:1440 次 日期:2016-08-18 14:50:30
溫馨提示:易賢網小編為您整理了“既簡單又安全的PHP驗證碼 附調用方法”,方便廣大網友查閱!

這篇文章主要為大家分享了一段實用的PHP驗證碼類,既簡單又安全的PHP驗證碼代碼,感興趣的小伙伴們可以參考一下

一、驗證碼示例

名單

二、php驗證碼類,secoder.class.php

<?php 

/** 

 * 安全驗證碼 

 * 

 * 安全的驗證碼要:驗證碼文字扭曲、旋轉,使用不同字體,添加干擾碼 

 * 

 * @author 流水孟春 <cmpan(at)qq.com> 

 * @link http://labs.yulans.cn/YL_Security_Secoder 

 * @link http://wiki.yulans.cn/docs/yl/security/secoder 

 */

class YL_Security_Secoder { 

  /** 

   * 驗證碼的session的下標 

   * 

   * @var string 

   */

  //public static $seKey = 'sid.sek ey.ylans.cn'; 

  public static $seKey = 'sid'; 

  public static $expire = 3000;   // 驗證碼過期時間(s) 

  /** 

   * 驗證碼中使用的字符,01IO容易混淆,建議不用 

   * 

   * @var string 

   */

  public static $codeSet = '346789ABCDEFGHJKLMNPQRTUVWXY'; 

  public static $fontSize = 25;   // 驗證碼字體大小(px) 

  public static $useCurve = true;  // 是否畫混淆曲線 

  public static $useNoise = true;  // 是否添加雜點  

  public static $imageH = 0;    // 驗證碼圖片寬 

  public static $imageL = 0;    // 驗證碼圖片長 

  public static $length = 4;    // 驗證碼位數 

  public static $bg = array(243, 251, 254); // 背景 

  protected static $_image = null;   // 驗證碼圖片實例 

  protected static $_color = null;   // 驗證碼字體顏色 

  /** 

   * 輸出驗證碼并把驗證碼的值保存的session中 

   * 驗證碼保存到session的格式為: $_SESSION[self::$seKey] = array('code' => '驗證碼值', 'time' => '驗證碼創建時間'); 

   */

  public static function entry() { 

    // 圖片寬(px) 

    self::$imageL || self::$imageL = self::$length * self::$fontSize * 1.5 + self::$fontSize*1.5;  

    // 圖片高(px) 

    self::$imageH || self::$imageH = self::$fontSize * 2; 

    // 建立一幅 self::$imageL x self::$imageH 的圖像 

    self::$_image = imagecreate(self::$imageL, self::$imageH);  

    // 設置背景    

    imagecolorallocate(self::$_image, self::$bg[0], self::$bg[1], self::$bg[2]);  

    // 驗證碼字體隨機顏色 

    self::$_color = imagecolorallocate(self::$_image, mt_rand(1,120), mt_rand(1,120), mt_rand(1,120)); 

    // 驗證碼使用隨機字體  

    //$ttf = dirname(__FILE__) . '/ttfs/' . mt_rand(1, 20) . '.ttf'; 4 

    $ttf = dirname(__FILE__) . '/ttfs/4.ttf';  

    if (self::$useNoise) { 

      // 繪雜點 

      self::_writeNoise(); 

    }  

    if (self::$useCurve) { 

      // 繪干擾線 

      self::_writeCurve(); 

    } 

    // 繪驗證碼 

    $code = array(); // 驗證碼 

    $codeNX = 0; // 驗證碼第N個字符的左邊距 

    for ($i = 0; $i<self::$length; $i++) { 

      $code[$i] = self::$codeSet[mt_rand(0, 27)]; 

      $codeNX += mt_rand(self::$fontSize*1.2, self::$fontSize*1.6); 

      // 寫一個驗證碼字符 

      imagettftext(self::$_image, self::$fontSize, mt_rand(-40, 70), $codeNX, self::$fontSize*1.5, self::$_color, $ttf, $code[$i]); 

    } 

    // 保存驗證碼 

    isset($_SESSION) || session_start(); 

    $_SESSION[self::$seKey]['code'] = join('', $code); // 把校驗碼保存到session 

    $_SESSION[self::$seKey]['time'] = time(); // 驗證碼創建時間 

    header('Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate'); 

    header('Cache-Control: post-check=0, pre-check=0', false);    

    header('Pragma: no-cache');    

    header("content-type: image/png"); 

    // 輸出圖像 

    imagepng(self::$_image);  

    imagedestroy(self::$_image); 

  } 

  /** 

   * 畫一條由兩條連在一起構成的隨機正弦函數曲線作干擾線(你可以改成更帥的曲線函數) 

   *    

   *   高中的數學公式咋都忘了涅,寫出來 

   *   正弦型函數解析式:y=Asin(ωx+φ)+b 

   *   各常數值對函數圖像的影響: 

   *    A:決定峰值(即縱向拉伸壓縮的倍數) 

   *    b:表示波形在Y軸的位置關系或縱向移動距離(上加下減) 

   *    φ:決定波形與X軸位置關系或橫向移動距離(左加右減) 

   *    ω:決定周期(最小正周期T=2π/∣ω∣) 

   * 

   */

  protected static function _writeCurve() { 

    $A = mt_rand(1, self::$imageH/2);         // 振幅 

    $b = mt_rand(-self::$imageH/4, self::$imageH/4);  // Y軸方向偏移量 

    $f = mt_rand(-self::$imageH/4, self::$imageH/4);  // X軸方向偏移量 

    $T = mt_rand(self::$imageH*1.5, self::$imageL*2); // 周期 

    $w = (2* M_PI)/$T; 

    $px1 = 0; // 曲線橫坐標起始位置 

    $px2 = mt_rand(self::$imageL/2, self::$imageL * 0.667); // 曲線橫坐標結束位置       

    for ($px=$px1; $px<=$px2; $px=$px+ 0.9) { 

      if ($w!=0) { 

        $py = $A * sin($w*$px + $f)+ $b + self::$imageH/2; // y = Asin(ωx+φ) + b 

        $i = (int) ((self::$fontSize - 6)/4); 

        while ($i > 0) {  

          imagesetpixel(self::$_image, $px + $i, $py + $i, self::$_color); // 這里畫像素點比imagettftext和imagestring性能要好很多          

          $i--; 

        } 

      } 

    } 

    $A = mt_rand(1, self::$imageH/2);         // 振幅     

    $f = mt_rand(-self::$imageH/4, self::$imageH/4);  // X軸方向偏移量 

    $T = mt_rand(self::$imageH*1.5, self::$imageL*2); // 周期 

    $w = (2* M_PI)/$T;    

    $b = $py - $A * sin($w*$px + $f) - self::$imageH/2; 

    $px1 = $px2; 

    $px2 = self::$imageL; 

    for ($px=$px1; $px<=$px2; $px=$px+ 0.9) { 

      if ($w!=0) { 

        $py = $A * sin($w*$px + $f)+ $b + self::$imageH/2; // y = Asin(ωx+φ) + b 

        $i = (int) ((self::$fontSize - 8)/4); 

        while ($i > 0) {      

          imagesetpixel(self::$_image, $px + $i, $py + $i, self::$_color); // 這里(while)循環畫像素點比imagettftext和imagestring用字體大小一次畫出(不用這while循環)性能要好很多   

          $i--; 

        } 

      } 

    } 

  } 

  /** 

   * 畫雜點 

   * 往圖片上寫不同顏色的字母或數字 

   */

  protected static function _writeNoise() { 

    for($i = 0; $i < 10; $i++){ 

      //雜點顏色 

      $noiseColor = imagecolorallocate( 

               self::$_image,  

               mt_rand(150,225),  

               mt_rand(150,225),  

               mt_rand(150,225) 

             ); 

      for($j = 0; $j < 5; $j++) { 

        // 繪雜點 

        imagestring( 

          self::$_image, 

          5,  

          mt_rand(-10, self::$imageL),  

          mt_rand(-10, self::$imageH),  

          self::$codeSet[mt_rand(0, 27)], // 雜點文本為隨機的字母或數字 

          $noiseColor

        ); 

      } 

    } 

  } 

  /** 

   * 驗證驗證碼是否正確 

   * 

   * @param string $code 用戶驗證碼 

   * @param bool 用戶驗證碼是否正確 

   */

  public static function check($code) { 

    isset($_SESSION) || session_start(); 

    // 驗證碼不能為空 

    if(empty($code) || empty($_SESSION[self::$seKey])) { 

      //echo $_SESSION[self::$seKey]['code'].'1'; 

      return false; 

    } 

    // session 過期 

    if(time() - $_SESSION[self::$seKey]['time'] > self::$expire) { 

      unset($_SESSION[self::$seKey]); 

      //echo $_SESSION[self::$seKey]['code'].'2'; 

      return false; 

      //return 0; 

    } 

//   if($code == $_SESSION[self::$seKey]['code']) { 

    if(strtoupper($code) == $_SESSION[self::$seKey]['code']) { //不區分大小寫比較 

      //echo $_SESSION[self::$seKey]['code'].'3'; 

      return true;     

    } 

    //echo $_SESSION[self::$seKey]['code'].'4'; 

    return false; 

  } 

// useage 

/* 

YL_Security_Secoder::$useNoise = false; // 要更安全的話改成true 

YL_Security_Secoder::$useCurve = true; 

YL_Security_Secoder::entry(); 

*/

/* 

// 驗證驗證碼 

if (!YL_Security_Secoder::check(@$_POST['secode'])) { 

  print 'error secode'; 

*/

三、調用方法

1、顯示驗證碼頁面code.php

<?php  

  session_start(); 

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

  $vcode = new YL_Security_Secoder();   //實例化一個對象  

  $vcode->entry();  

?>  

2、檢查驗證碼是否正確

<?php  

  session_start(); 

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

  $vcode = new YL_Security_Secoder();   //實例化一個對象  

  //$vcode->entry();  

  $code = $_GET['code'];  

  echo $vcode->check($code);     

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

?>  

3、驗證碼輸入框調用頁面

<img id="messageImg" src='images/tishis2.gif' width='16' height='16'> 單擊圖片重新獲取驗證碼<br> 

<a href="#"><img src="code.php" onclick="javascript:this.src='code.php?tm='+Math.random();" />

以上就是本文的全部內容,希望對大家學習PHP程序設計有所幫助。

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
一级成人国产| 亚洲视屏一区| 伊人久久av导航| 亚洲日本视频| 国产精品区二区三区日本| 久久精品二区| 影音先锋在线一区| 久久在线91| 亚洲精品乱码久久久久久蜜桃91| 国产日韩欧美一区二区| 欧美极品一区| 一本色道久久综合亚洲精品婷婷 | 欧美一区精品| 伊甸园精品99久久久久久| 中文久久精品| 极品裸体白嫩激情啪啪国产精品| 亚洲一区二区三区在线观看视频 | 性一交一乱一区二区洋洋av| 午夜久久99| 国产精品社区| 亚洲午夜激情| 欧美日本一区二区视频在线观看 | 国产欧美短视频| 欧美日韩一区在线视频| 免费视频一区二区三区在线观看| 亚洲大胆视频| 欧美深夜福利| 欧美精品九九| 久久蜜桃资源一区二区老牛| 国产精品毛片在线看| 激情五月***国产精品| 欧美国产日本| 久久综合九色99| 免费在线欧美黄色| 国产嫩草一区二区三区在线观看 | 韩国一区二区三区在线观看| 久久久久看片| 久久人人九九| 久久性天堂网| 欧美成人免费在线| 欧美fxxxxxx另类| 欧美 日韩 国产精品免费观看| 亚洲深夜av| a91a精品视频在线观看| 亚洲看片一区| 日韩视频不卡| 一本色道久久| 国产精品免费在线| 亚洲专区欧美专区| 久久精品成人一区二区三区蜜臀| 亚洲综合社区| 久久精品九九| 欧美日韩精品久久| 国产精品激情| 激情丁香综合| 亚洲精品男同| 亚洲免费中文| 欧美一区91| 欧美另类专区| 亚洲青色在线| 亚洲女人av| 欧美二区在线| 亚洲精品在线免费| 免播放器亚洲| 国产综合网站| 国产精品老牛| 欧美一区1区三区3区公司| 美女诱惑一区| 国产精品a级| 亚洲精品视频一区二区三区| 亚洲一区二区精品在线观看| 欧美在线不卡| 91久久综合| 鲁大师成人一区二区三区 | 羞羞视频在线观看欧美| 你懂的一区二区| 在线播放一区| 久久久青草婷婷精品综合日韩| 国产精品大片| 亚洲欧美不卡| 国产一区亚洲| 久久国产精品久久久久久电车| 国产精品国产精品| 免费亚洲视频| 日韩午夜免费视频| 欧美午夜精品| 免费亚洲一区二区| 亚洲精品孕妇| 欧美精品二区| 奶水喷射视频一区| 日韩亚洲精品在线| 国产在线一区二区三区四区 | 亚洲专区一区二区三区| 国内精品久久久久国产盗摄免费观看完整版 | 欧美精品一区在线| 国产精品推荐精品| 亚洲激情精品| 欧美婷婷在线| 欧美在线高清| 亚洲一区二区三区精品动漫 | 久久激情网站| 一区二区日本视频| 一区在线观看| 欧美三区美女| 午夜国产精品视频| 老司机精品导航| 国产一区二区三区高清| 在线欧美不卡| 韩日成人av| 欧美日韩少妇| 欧美在线看片| 欧美精品网站| 欧美日韩国产探花| 欧美喷水视频| 欧美国产专区| 久久精品日韩| 欧美一区国产在线| 老牛国产精品一区的观看方式| 国产精品区免费视频| 国产欧美精品| 国产一区白浆| 先锋影音久久| 久久看片网站| 欧美在线1区| 欧美久久久久久久| 国内一区二区三区在线视频| 国产综合自拍| 亚洲精品国产系列| 99成人精品| 国产精品永久| 噜噜噜91成人网| 久久婷婷丁香| 国产综合久久| 99精品热视频只有精品10| 99亚洲一区二区| 国产精品一区在线播放| 久久久久久九九九九| 欧美日韩mv| 日韩亚洲不卡在线| 香蕉久久夜色| 国产在线欧美日韩| 99国产精品久久久久久久| 国产一区二区三区奇米久涩| 久久狠狠婷婷| 亚洲福利专区| 久久精品电影| 亚洲人成网站在线观看播放| 免费一区视频| 一区免费视频| 麻豆久久久9性大片| 欧美成人蜜桃| 国产一级一区二区| 欧美亚韩一区| 免费视频一区二区三区在线观看| 欧美日韩精品一区| 国产精品免费区二区三区观看| 欧美一区亚洲二区| 91久久极品少妇xxxxⅹ软件| 亚洲欧美日韩视频二区| 亚洲视频高清| 久久久久久久久久久一区| 亚洲国产一区二区精品专区| 欧美专区18| 亚洲性图久久| 欧美成人有码| 性8sex亚洲区入口| 99热免费精品| 国语精品中文字幕| 欧美在线日韩| 欧美在线综合| 一区二区久久| 黄色亚洲免费| 欧美日韩一卡| 久久综合一区二区三区| 国产精品一区二区a| 亚洲国产日韩美| 国产精品分类| 欧美日韩一区综合| 欧美一区2区三区4区公司二百| 国产日韩欧美一区二区三区在线观看 | 亚洲午夜精品久久| 国产一区二区三区四区三区四| 亚洲欧美日韩精品综合在线观看| 亚洲精品精选| 亚洲欧洲午夜| 在线看片一区| 亚洲国产欧美国产综合一区| 国内自拍视频一区二区三区| 欧美日韩一区综合| 欧美日本韩国一区二区三区| 欧美成人午夜| 午夜免费电影一区在线观看| 欧美一区国产一区| 午夜日韩激情| 国产一区高清视频| 激情视频一区| 亚洲日本视频| 亚洲一区二区三区免费在线观看| 国产精品久久久久久久久久妞妞| 99这里有精品| 亚洲永久免费| 老色鬼久久亚洲一区二区| 欧美尤物一区| 欧美精品一卡| 精品电影一区| 中文一区二区| 久久精品人人| 国产一区久久| 亚洲精品一区二区三区蜜桃久| 99一区二区| 美女精品国产| 国产精品99一区二区| 亚洲成人资源| 香蕉久久国产| 国产精品对白刺激久久久| 亚洲国产美女| 久久狠狠婷婷| 精品不卡视频| 亚洲欧美精品在线观看| 欧美成人一品| 亚洲人成人一区二区三区| 亚洲一区日韩| 欧美日韩国产综合视频在线| 亚洲青涩在线| 女人色偷偷aa久久天堂 | 性欧美精品高清| 久久免费国产| 亚洲欧洲一区二区天堂久久| 亚洲欧美清纯在线制服| 欧美性色综合| 麻豆av一区二区三区久久| 亚洲午夜久久久久久尤物| 先锋亚洲精品| 亚洲久久视频| 国产精品分类| 久久一区二区三区超碰国产精品| 精品成人免费| 欧美a级在线| 国产乱码精品| 亚洲日本视频| 午夜精品婷婷| 性色一区二区三区| 一本久道久久久| 亚洲午夜av| 欧美日韩调教| 久久亚洲色图| 免费日韩视频| 亚洲深夜激情| 亚洲天堂成人| 欧美日韩精品免费观看视一区二区| 国产精品久久久久久模特 | 亚洲欧美综合| 久久xxxx精品视频| 一道本一区二区| 黄色成人精品网站| 欧美天堂亚洲电影院在线观看| 欧美亚洲免费高清在线观看| 99精品国产在热久久| 激情欧美日韩| 亚洲性人人天天夜夜摸| 欧美先锋影音| 国内精品一区二区| 黄色综合网站| 亚洲国产精品www| 亚洲国产精品一区制服丝袜| 亚洲图片在线观看| 国内视频精品| 精品不卡一区二区三区| 亚洲第一在线| 一区二区三区三区在线| 99亚洲视频| 国产欧美一级| 亚洲欧美视频一区二区三区| 亚洲一区二区三区高清| 免费一区二区三区| 欧美69wwwcom| 国产中文一区| 亚洲看片网站| 亚洲欧美成人综合| 欧美在线视频二区| 国产精品99免费看| 最新亚洲视频| 国产精品日韩欧美一区二区| 久久国产精品久久精品国产| 久久综合九色综合欧美狠狠| 欧美福利精品| 在线观看不卡| 国产精品免费一区二区三区观看 | 中文国产一区| 国产日韩欧美三区| 久久精品道一区二区三区| 欧美在线黄色| 亚洲国产一区二区三区a毛片| 99精品热6080yy久久| 性欧美暴力猛交另类hd| 午夜精品国产| 99国产精品久久久久久久| 国产深夜精品| 欧美久久成人| 国产日韩欧美三级| 欧美区国产区| 一区二区日韩免费看| 你懂的一区二区| 99pao成人国产永久免费视频| 国产一区二区三区的电影 | 亚洲一区3d动漫同人无遮挡| 欧美在线精品一区| 亚洲清纯自拍| 午夜欧美精品| 亚洲欧美成人| 激情欧美亚洲| 欧美黄在线观看| 亚洲资源av| 亚洲另类视频| 国自产拍偷拍福利精品免费一 | 一区三区视频| 香蕉久久夜色精品| 亚洲国产精品综合| 午夜精品偷拍| 免费在线欧美黄色| av成人毛片| 韩日成人在线| 老司机精品导航| 国产精品一页| 日韩网站在线| 在线观看一区欧美| 国产精品激情| 欧美精品成人| 麻豆亚洲精品| 亚洲永久在线| 国产伦精品一区| 一区二区日韩免费看| 在线成人亚洲| 在线免费观看一区二区三区| 欧美粗暴jizz性欧美20| 久久精品女人天堂| 性8sex亚洲区入口| 国产精品试看| 亚洲一区精彩视频| 国产伦精品一区二区三区视频黑人| 国产精品啊啊啊| 欧美日韩91| 欧美精品成人一区二区在线观看| 麻豆精品网站| 狂野欧美一区| 欧美.日韩.国产.一区.二区| 久久久久久九九九九| 久久国产主播精品| 欧美高清日韩| 国内精品久久久久久久影视麻豆 | 雨宫琴音一区二区在线| 激情欧美国产欧美| 亚洲国产一区二区精品专区| 黄色av日韩| 亚洲国产美女| 国产精品久久久久久模特| 亚洲专区在线| 午夜久久资源| 极品少妇一区二区三区| 99国内精品久久久久久久软件| 一区二区三区免费看| 午夜亚洲性色福利视频| 久久一二三四| 黄色日韩在线| 99日韩精品| 久久久久久夜| 亚洲午夜精品久久| 一本一本久久| 久久久久久久欧美精品| 韩国一区二区三区在线观看| 日韩亚洲国产精品| 老鸭窝91久久精品色噜噜导演| 欧美搞黄网站| 亚洲人体大胆视频| 久久精品国产99精品国产亚洲性色| 久久综合伊人| 亚洲精品美女91| 久久免费国产| 亚洲美女毛片| 欧美国产另类| 国产日韩欧美在线播放不卡| 久久中文在线| 99这里有精品| 欧美日韩第一区| 国产日韩亚洲| 国内精品亚洲| 久久精品卡一| 99综合精品| 国产精品jizz在线观看美国| 亚洲中字在线| 在线日韩欧美| 欧美精品网站| 午夜一区在线| 日韩一级大片| 国内一区二区三区在线视频| 欧美一级一区| 国产欧美一区二区色老头| 国产一区自拍视频| 亚洲欧美日韩国产一区| 伊人成人在线视频|