成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > ThinkPHP 3.2.3實(shí)現(xiàn)加減乘除圖片驗(yàn)證碼

ThinkPHP 3.2.3實(shí)現(xiàn)加減乘除圖片驗(yàn)證碼

熱門標(biāo)簽:蘇州外呼系統(tǒng)有效果嗎 智能電銷語音機(jī)器人資訊 兼職做地圖標(biāo)注好賺錢嗎 山東電銷卡外呼系統(tǒng)原理是什么 打開百度地圖標(biāo)注 400 電話 辦理 海南外呼系統(tǒng)方案 亳州企業(yè)外呼系統(tǒng) 地圖標(biāo)注怎么做商戶驗(yàn)證

ThinkPHP 3.2.3 自帶的驗(yàn)證碼類位于 /ThinkPHP/Library/Think/Verify.class.php,字體文件位于 /ThinkPHP/Library/Think/Verify/

可以在 Verify.class.php 文件內(nèi)進(jìn)行修改,也可以單獨(dú)寫一個類繼承自帶的驗(yàn)證碼類。如果單獨(dú)寫一個繼承的類,可以重用父類的屬性和方法,但是要注意的是父類中有一些屬性和方法是私有(private)的,可以修改這些私有的屬性和方法為保護(hù)(protected)的,如果不希望修改框架自帶的方法的話,也可以在子類中再定義這些屬性和方法。

測試的控制器位于 /Application/Home/Controller/TestVerifyController.class.php

測試的試圖位于 /Application/Home/View/User/verify.html

自定義的子類位于 /Applicaion/Home/Common/VerifyProcess.class.php 

VerifyProcess.class.php:

?php
 
namespace Home\Common;
use Think\Verify;
 
class VerifyProcess extends Verify {
 
 private $_image = NULL;  // 驗(yàn)證碼圖片實(shí)例
 private $_color = NULL;  // 驗(yàn)證碼字體顏色
 
 public function entryProcess($id = '') {
 // 圖片寬(px)
 $this->imageW || $this->imageW = $this->length*$this->fontSize*1.5 +
 $this->length*$this->fontSize/2;
 // 圖片高(px)
 $this->imageH || $this->imageH = $this->fontSize * 2.5;
 // 建立一幅 $this->imageW x $this->imageH 的圖像
 $this->_image = imagecreate($this->imageW, $this->imageH);
 
 // 設(shè)置背景  
 imagecolorallocate($this->_image, $this->bg[0], $this->bg[1], $this->bg[2]);
 
 // 驗(yàn)證碼字體隨機(jī)顏色
 $this->_color = imagecolorallocate($this->_image, mt_rand(1,150), 
 mt_rand(1,150), mt_rand(1,150));
 // 驗(yàn)證碼使用隨機(jī)字體
 $ttfPath = $_SERVER['DOCUMENT_ROOT'].'/ThinkPHP/Library/Think/Verify/' . 
 ($this->useZh ? 'zhttfs' : 'ttfs') . '/';
 
 if(empty($this->fontttf)){
  $dir = dir($ttfPath);
  $ttfs = array();  
  while (false !== ($file = $dir->read())) {
   if($file[0] != '.'  substr($file, -4) == '.ttf') {
    $ttfs[] = $file;
   }
  }
  $dir->close();
  $this->fontttf = $ttfs[array_rand($ttfs)];
 }
 $this->fontttf = $ttfPath . $this->fontttf;
  
 if($this->useImgBg) {
  $this->_background();
 }
  
 if ($this->useNoise) {
  // 繪雜點(diǎn)
  $this->_writeNoise();
 }
 if ($this->useCurve) {
  // 繪干擾線
  $this->_writeCurve();
 }
  
 // 繪驗(yàn)證碼
 $codeNX = 0; // 驗(yàn)證碼第N個字符的左邊距
 
 // 驗(yàn)證碼為簡單運(yùn)算
 $a = mt_rand(1,9);
 $b = mt_rand(1,9);
 $operate_array = array('+', '-', '*');
 $key = mt_rand(0, count($operate_array) - 1);
  
 if($operate_array[$key] == '+') { // 加法
  $code = $a.'+'.$b.'=';
  $result = intval($a + $b);
 } elseif($operate_array[$key] == '-') { // 減法
  $code = max($a,$b).'-'.min($a,$b).'=';
  $result = intval(abs($a - $b));
 } else { // 乘法
  $code = $a.'*'.$b.'=';
  $result = intval($a * $b);
 }
 
 $this->length = 4;
 
 for ($i = 0; $i$this->length; $i++) {
  $codeNX += mt_rand($this->fontSize*1.2, $this->fontSize*1.6);
  imagettftext($this->_image, $this->fontSize, mt_rand(-40, 40), 
  $codeNX, $this->fontSize*1.6, $this->_color, $this->fontttf, $code[$i]);
 }
 
 // 保存驗(yàn)證碼
 $key  = $this->authcode($this->seKey);
 $result  = $this->authcode($result);
 $secode  = array();
 $secode['verify_code'] = $result; // 把校驗(yàn)碼保存到session
 $secode['verify_time'] = NOW_TIME; // 驗(yàn)證碼創(chuàng)建時間
 session($key.$id, $secode);
  
 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($this->_image);
 imagedestroy($this->_image);
 }
 
 /**
 * 畫雜點(diǎn)
 * 往圖片上寫不同顏色的字母或數(shù)字
 */
 private function _writeNoise() {
  $codeSet = '2345678abcdefhijkmnpqrstuvwxyz';
  for($i = 0; $i  10; $i++){
   //雜點(diǎn)顏色
   $noiseColor = imagecolorallocate($this->_image, mt_rand(150,225), 
   mt_rand(150,225), mt_rand(150,225));
   for($j = 0; $j  5; $j++) {
    // 繪雜點(diǎn)
    imagestring($this->_image, 5, mt_rand(-10, $this->imageW), 
   mt_rand(-10, $this->imageH), $codeSet[mt_rand(0, 29)], $noiseColor);
   }
  }
 }
 
 /**
 * 畫一條由兩條連在一起構(gòu)成的隨機(jī)正弦函數(shù)曲線作干擾線(你可以改成更帥的曲線函數(shù))
 *  
 *  高中的數(shù)學(xué)公式咋都忘了涅,寫出來
 *  正弦型函數(shù)解析式:y=Asin(ωx+φ)+b
 *  各常數(shù)值對函數(shù)圖像的影響:
 *  A:決定峰值(即縱向拉伸壓縮的倍數(shù))
 *  b:表示波形在Y軸的位置關(guān)系或縱向移動距離(上加下減)
 *  φ:決定波形與X軸位置關(guān)系或橫向移動距離(左加右減)
 *  ω:決定周期(最小正周期T=2π/∣ω∣)
 *
 */
 private function _writeCurve() {
 $px = $py = 0;
  
 // 曲線前部分
 $A = mt_rand(1, $this->imageH/2);     // 振幅
 $b = mt_rand(-$this->imageH/4, $this->imageH/4); // Y軸方向偏移量
 $f = mt_rand(-$this->imageH/4, $this->imageH/4); // X軸方向偏移量
 $T = mt_rand($this->imageH, $this->imageW*2); // 周期
 $w = (2* M_PI)/$T;
      
 $px1 = 0; // 曲線橫坐標(biāo)起始位置
 $px2 = mt_rand($this->imageW/2, $this->imageW * 0.8); // 曲線橫坐標(biāo)結(jié)束位置
 
 for ($px=$px1; $px=$px2; $px = $px + 1) {
  if ($w!=0) {
   $py = $A * sin($w*$px + $f)+ $b + $this->imageH/2; 
   // y = Asin(ωx+φ) + b
   $i = (int) ($this->fontSize/5);
   while ($i > 0) {
    imagesetpixel($this->_image, $px + $i , $py + $i, $this->_color); 
    // 這里(while)循環(huán)畫像素點(diǎn)比imagettftext和imagestring用字體大小一次畫出
    (不用這while循環(huán))性能要好很多   
    $i--;
   }
  }
 }
  
 // 曲線后部分
 $A = mt_rand(1, $this->imageH/2);     // 振幅 
 $f = mt_rand(-$this->imageH/4, $this->imageH/4); // X軸方向偏移量
 $T = mt_rand($this->imageH, $this->imageW*2); // 周期
 $w = (2* M_PI)/$T;  
 $b = $py - $A * sin($w*$px + $f) - $this->imageH/2;
 $px1 = $px2;
 $px2 = $this->imageW;
 
 for ($px=$px1; $px=$px2; $px=$px+ 1) {
  if ($w!=0) {
   $py = $A * sin($w*$px + $f)+ $b + $this->imageH/2; 
   // y = Asin(ωx+φ) + b
   $i = (int) ($this->fontSize/5);
   while ($i > 0) {  
    imagesetpixel($this->_image, $px + $i, $py + $i, $this->_color); 
    $i--;
   }
  }
 }
 }
 
 /* 加密驗(yàn)證碼 */
 private function authcode($str){
 $key = substr(md5($this->seKey), 5, 8);
 $str = substr(md5($str), 8, 10);
 return md5($key . $str);
 } 
 
 /**
 * 繪制背景圖片
 * 注:如果驗(yàn)證碼輸出圖片比較大,將占用比較多的系統(tǒng)資源
 */
 private function _background() {
  $path = dirname(__FILE__).'/Verify/bgs/';
  $dir = dir($path);
 
  $bgs = array();  
  while (false !== ($file = $dir->read())) {
   if($file[0] != '.'  substr($file, -4) == '.jpg') {
    $bgs[] = $path . $file;
   }
  }
  $dir->close();
 
  $gb = $bgs[array_rand($bgs)];
 
  list($width, $height) = @getimagesize($gb);
  // Resample
  $bgImage = @imagecreatefromjpeg($gb);
  @imagecopyresampled($this->_image, $bgImage, 0, 0, 0, 0, $this->imageW, 
  $this->imageH, $width, $height);
  @imagedestroy($bgImage);
 } 
}  

TestVerifyController.class.php:

?php
namespace Home\Controller;
use Think\Controller;
use Home\Common\VerifyProcess;
 
class TestVerifyController extends Controller {
 
 // 界面
 public function index() {
  $this->display('User/verify');
 }
 
 // 驗(yàn)證
 public function check_verify() {
   
  $verify = new VerifyProcess();
 if(!$verify->check($_POST['verify'])) {
  $this->error('驗(yàn)證碼錯誤');
 }
 }
 
 // 顯示驗(yàn)證碼
 public function verify() {
   $verify = new VerifyProcess();
   $verify->entryProcess();
 } 
}

verify.html:

!DOCTYPE html>
html lang="en">
head>
 meta charset="UTF-8">
 title>Document/title>
 script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js">/script>
/head>
body>
 form action="{:U('Home/TestVerify/check_verify','','')}" method="post">
  table>
   tr>
    td>驗(yàn)證碼:/td>
    td>input type="text" name="verify">/td>
    td>
     img id="verify" src="{:U('Home/TestVerify/verify','','')}" 
     style="cursor: pointer;" alt="">
     a id="refresh" href="javascript:void(0)" rel="external nofollow" >更換驗(yàn)證碼/a>
    /td>
   /tr>
   tr>
    td colspan="2">
     input type="submit" value="提交">
    /td>
   /tr>
  /table>
 /form>
/body>
script>
 $(function(){
 
  $src = $("#verify").attr('src');
 
  $("#refresh").click(function(){
   change_verify();
  }); 
 
  $("#verify").click(function(){
   change_verify();
  });
 
  function change_verify() {
   $('#verify').attr('src', $src + '?' + Math.random());
  }
 });
 
/script>
/html>  

效果:

也可以點(diǎn)擊圖片更換驗(yàn)證碼,只需要把點(diǎn)擊事件換到圖片上就行了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家,關(guān)注腳本之家公眾號的更多精彩內(nèi)容。

您可能感興趣的文章:
  • 用php簡單實(shí)現(xiàn)加減乘除計算器
  • php的chr和ord函數(shù)實(shí)現(xiàn)字符加減乘除運(yùn)算實(shí)現(xiàn)代碼
  • PHP實(shí)現(xiàn)加減乘除最簡單的實(shí)例分享

標(biāo)簽:清遠(yuǎn) 綏化 安康 呼倫貝爾 金華 萊蕪 溫州 紹興

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ThinkPHP 3.2.3實(shí)現(xiàn)加減乘除圖片驗(yàn)證碼》,本文關(guān)鍵詞  ThinkPHP,3.2.3,實(shí)現(xiàn),加減乘除,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ThinkPHP 3.2.3實(shí)現(xiàn)加減乘除圖片驗(yàn)證碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于ThinkPHP 3.2.3實(shí)現(xiàn)加減乘除圖片驗(yàn)證碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    成人欧美精品一区二区| 在线观看av黄网站永久| 搡老岳熟女国产熟妇| 久久久久久久久爱| 91麻豆免费视频| 精品国产一区久久| 久久精品无码一区二区日韩av| 多人欧美交性姿势| 天堂久久精品忘忧草| 欧美日韩激情小视频| 日韩va欧美va亚洲va久久| 日韩精品资源二区在线| 国产精品999在线观看| 国产精品一区免费在线| 最新欧美电影| 久久久国产在线视频| 精品国产乱码久久久久久蜜坠欲下| 色综合天天综合网天天狠天天| 伊人成色综合网| 中文字幕免费高清视频| 色伊人久久综合中文字幕| 亚洲男男av| 激情六月天婷婷| 成人av资源在线观看| 久久久成人精品视频| 日b视频免费观看| 欧美最大成人综合网| 国产人伦精品一区二区| 亚洲综合视频一区| 亚洲精品自产拍在线观看| 精品国产乱码久久久久久1区二区| 中文欧美日本在线资源| 九色丨蝌蚪丨成人| 国产精品久久久久av福利动漫| 欧美重口另类videos人妖| 在线手机福利影院| 一区二区三区四区在线不卡高清| 天天摸夜夜操| 日本免费无人高清| 成人免费精品视频| 中文字幕成人在线观看| 国产玉足脚交久久欧美| a级片免费观看| 亚洲高清不卡av| 日韩免费一级视频| 国偷自产av一区二区三区小尤奈| 亚洲视频小说图片| 欧美α欧美αv大片| 久久在线播放| 中文字幕观看在线| 国产免费av电影| 97caopron在线视频| 人妻无码中文字幕| 第一区第二区在线| 亚洲国产欧美一区| 女人在下体塞跳蛋在线观看| av无码精品一区二区三区宅噜噜| 久久精品国产亚洲a∨麻豆| 热久久久久久久| 成人三级视频在线观看一区二区| 国产视频一区二区在线观看| 93在线视频精品免费观看| 国产男女爽爽爽| 在线观看的毛片| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲男女自偷自拍| 日韩专区一区二区| 黄色国产网站在线播放| 伊人精品综合| 黄页网站大全在线免费观看| 国产伦精品一区二区三区高清| 精品一区二区三区中文字幕视频| 午夜丝袜av电影| 在线影院自拍| 国产福利一区二区三区在线播放| 久久综合色一本| 涩涩视频在线免费看| 亚洲精选一区| 日韩一区二区在线观看| 三级av免费观看| www.神马久久| 国产又色又爽又黄的| 成人网站免费观看| 亚洲免费在线视频一区 二区| 国产一区二区三区在线看| 久久99国产精品久久99小说| 色婷婷综合久久久| 欧美三级黄色大片| 亚洲免费av片| 国产视频不卡在线| 亚洲精品国产精品国自产观看浪潮| 69av一区二区三区| 国产成人av电影| av在线播放观看| 国产精品入口免费视频一| 欧美大片欧美激情性色a∨久久| 黄色小说在线观看视频| 亚洲视频自拍| 亚洲伊人伊色伊影伊综合网| 日韩精品久久久久久久电影99爱| 欧美mv日韩mv国产网站| 日韩精品久久久久久久软件91| 久久av在线看| 咪咪网在线视频| 亚洲人妻一区二区三区| 中国在线观看免费国语版电影| 欧美一区日本一区韩国一区| 亚洲精品午夜久久久久久久| 97超碰在线免费| 三级理论午夜在线观看| 5566中文字幕| 欧美久久久久久久久中文字幕| 欧美日韩精品久久久| 激情成人亚洲| 美日韩精品视频| 国产成人精品在线视频| 婷婷av一区二区三区| 国产在线拍揄自揄拍无码| 麻豆chinese极品少妇| 中文字幕久久av| 性色av蜜臀av色欲av| 无码 制服 丝袜 国产 另类| 日本高清视频一区| 亚洲午夜精品久久久久久高潮| 国产美女诱惑一区二区| 亚洲欧美日韩国产成人综合一二三区| 最近中文字幕在线中文视频| 最新国产精品| 国产精品一区二区免费看| 一本加勒比hezyo黑人| 1024成人| 69成人在线| 欧美高清一区| 成人免费视频国产免费观看| 日韩少妇裸体做爰视频| 成人黄色免费| 在线不卡一区二区三区| 免费久久久一本精品久久区| 亚洲成a人片综合在线| 自拍偷拍中文字幕| 日本特黄特色aaa大片免费| 亚洲欧洲高清在线| 欧美男人天堂| 91成人午夜| av不卡免费电影| 国产理论电影在线| 波多野结衣在线网址| 涩涩视频免费观看| 国产亚洲欧美一级| 一级片a一级片| 在线不卡一区二区| 色噜噜狠狠狠综合曰曰曰| 男女污视频在线观看| 国产视频aaa| 欧美成人精品二区三区99精品| 男人插曲女人的视频| 麻豆国产尤物av尤物在线观看| 国产精品系列视频| 亚洲午夜精品久久久久久高潮| 无码人妻丰满熟妇区五十路| 91精品专区| 日韩西西人体444www| 高清欧美性猛交xxxx黑人猛| 亚州欧美在线| 中文字幕成人av| 日韩成人一区二区| 最好2018中文免费视频| 久久精品国产理论片免费| 国产福利精品视频| 黄色一级片在线免费观看| 2019最新中文字幕| 狠狠入ady亚洲精品经典电影| 97超碰人人在线| 91国产精品视频在线| 蜜臀av免费在线观看| 91沈先生播放一区二区| 欧美一级特黄aaa| 7777kkk亚洲综合欧美网站| 91porn在线| 国产精品123区| 国产91精品露脸国语对白| 色欲av无码一区二区三区| av在线视屏| 5g影院天天爽成人免费下载| 欧美精品日韩一区| 懂色中文一区二区三区在线视频| 亚洲永久精品免费| 欧美成人在线免费| 夜夜嗨一区二区| 午夜刺激在线| 国产精品伦一区二区| 一本久久a久久精品亚洲| 思99热精品久久只有精品| 日韩成人精品一区二区| 亚洲精品中文字幕在线播放| 中文字幕乱码亚洲无线精品一区| 成人免费网站在线看| 欧美高清成人| 欧美伊人久久久久久久久影院| 久久久久无码精品| 国产精品久久久影院| 五月天婷婷亚洲| 一区二区av在线| 成人午夜一级二级三级| 久久久久久久久久综合| 一本大道av伊人久久综合| 成人深夜直播免费观看| dy888亚洲精品一区二区三区| 亚洲一区网址| 国产中文字幕一区| 久久久香蕉视频| 国产天堂亚洲国产碰碰| 清纯唯美激情亚洲| 四虎激情影院| 欧美精品在线一区| 九九这里只有精品视频| 亚洲一级网站| 日韩欧美在线精品| 成人性a激情免费视频| 欧美jiizzhd精品欧美| 久久久久国产精品一区三寸| 99re在线视频免费观看| 97超碰人人澡| 东方欧美亚洲色图在线| 三级做a全过程在线观看| 亚洲视频图片小说| av网址在线| 久久免费电影| 中文字幕免费视频| 久久免费视频这里只有精品| 日韩av在线一区二区| 五月天亚洲精品| 久青草视频在线播放| 欧美日韩视频免费观看| а√天堂中文在线资源bt在线| 日韩高清免费观看| 日韩欧美小视频| 中文字幕精品一区二区三区在线| 欧美日韩中出| 风韵丰满熟妇啪啪区老熟熟女| 在线视频三区| 黄色在线免费| 国产网友自拍电影在线| 亚洲精品7777xxxx青睐| 99视频免费观看蜜桃视频| 亚洲一区二区四区| 成人午夜在线影视| 后进极品白嫩翘臀在线视频| 欧美成人手机视频| 国产在线精品一区二区中文| 亚洲欧美日韩在线| 国产69精品久久久久9999apgf| 国产精品免费丝袜| 日日摸.com| 国产精品白丝av| 国产精品人人爽人人做我的可爱| 自拍偷拍18p| 亚洲精品日韩欧美| 男人的天堂影院| 欧洲猛交xxxx乱大交3| 视色视频在线观看| 91久久综合亚洲鲁鲁五月天| 欧美精品一区二区三区久久久| 美国黄色一级毛片| 美女福利视频一区| 色天下一区二区三区| 性欧美疯狂猛交69hd| 亚洲香肠在线观看| 国内精品视频免费| 78国产伦精品一区二区三区| 毛片av一区二区| 日韩在线视频播放| 国产婷婷色一区二区在线观看| 欧美性受xxxx黑人xyx性爽| 国产精品av免费观看| 伊人久久五月天| 日本成人在线免费观看| 丁香花在线电影| 一二三四社区欧美黄| 少妇又色又爽又黄的视频| 蜜桃臀一区二区三区| 91亚洲国产成人精品一区| 国产aⅴ精品一区二区三区黄| 福利视频在线| 午夜一区在线| 欧美精品久久久久| 亚洲精品成人电影| 色视频在线观看在线播放| 久久66热偷产精品| 一个人在线视频免费观看www| 欧美疯狂爱爱xxxxbbbb| 奇米四色中文综合久久| 亚洲精一区二区三区| 无码人妻精品一区二区三区66| 在线观看黄色国产| 国产精品主播一区二区| 区一区二在线观看| 国产色综合久久| 可以直接看的av网址站| 久久免费视频色| 国产精品无码电影| eeuss鲁丝片eeuss影院| 中文字幕一区二区三区色视频| 久久久国产一区| 精品72久久久久中文字幕| 黑人性受xxxx黑人xyx性爽| 成人妖精视频yjsp地址| 超碰97久久国产精品牛牛| 国产精品区二区三区日本| 欧美性生交xxxxx久久久| 丁香桃色午夜亚洲一区二区三区| 九色丨蝌蚪丨成人| 精品国产影院| 久久久久国产精品午夜一区| 日韩一区二区免费高清| 日本a√在线观看| 成人黄动漫网站免费| 国产xxxxxx| 欧美日韩久久久| 久久777国产线看观看精品| 亚洲第一区第二区第三区| 欧美性猛交xxxx黑人交| 精品少妇人妻av免费久久洗澡| 偷拍女澡堂一区二区三区| 久久伊99综合婷婷久久伊| 国产精品传媒毛片三区| 久久97久久97精品免视看秋霞| 久久一区国产|