亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

Php實現驗證碼功能

2020-03-22 17:56:00
字體:
來源:轉載
供稿:網友
  • 驗證碼這樣的功能可以說是無處不在了,接下來使用php來實現驗證碼這樣的功能,這里我是將驗證碼實現抽取到一個類中獨立開來,那么后面如果再使用到驗證碼功能,直接引入該類文件并創建該類的實例,就可以使用驗證碼了,代碼如下:

    驗證碼類文件vcode.html' target='_blank'>class.php

     

    <?php/**  *驗證碼類  */  class Vcode{	private $width;//圖片寬度	private $height;//圖片高度	private $num;//驗證碼個數	private $img;//圖片資源	private $code;//驗證碼	private $pointNum;//干擾點個數	private $lineNum;//干擾線個數	private $fontFile;//字體文件		//構造函數初始化相關數據	function __construct($width=85,$height=34,$num=4){		$this->width=$width;		$this->height=$height;		$this->num=$num;		$this->code=$this->createCode();		$this->pointNum=100;		$this->lineNum=10;		$this->fontFile="STLITI.TTF";	}		/**	  *用于設置成員屬性	  *@param string $key 成員屬性名	  *@param mixed $value 成員屬性值	  *@return object 返回自己對象$this,可用于連貫操作	  */	public function set($key,$val){		//get_class_vars() 獲取類中的屬性組成的數組		//get_class() 返回對象的類名		if(array_key_exists($key,get_class_vars(get_class($this)))){			$this->setOption($key,$val);		}		return $this;	}	//設置參數	private function setOption($key,$value){		$this->$key=$value;	}		//獲取驗證碼	public function getCode(){		return $this->code;	}		//輸出圖像	public function outImg(){		//創建圖像		$this->createImage();		//畫驗證碼		$this->drawCode();		//畫干擾元素		$this->drawDisturbColor();		//輸出圖像		$this->printImg();	}		//畫驗證碼	private function drawCode(){		$this->fontFile="./font/".$this->fontFile;		for($i=0;$i<$this->num;$i++){			//設置隨機顏色			$randColor=imagecolorallocate($this->img,rand(0,128),rand(0,128),rand(0,128));			//字體大小			$fontSize=rand(20,23);			//字體水平位置			$x=($this->width/$this->num)*$i;			//水平方向的位置			$y=rand($fontSize,imagefontheight($fontSize)+3);			//畫字體			imagettftext($this->img,$fontSize,0,$x,$y,$randColor,$this->fontFile,$this->code{$i});		}	}	//畫干擾元素	private function drawDisturbColor(){		//畫干擾點		for($i=0;$i<$this->pointNum;$i++){			//設置隨機顏色			$randColor=imagecolorallocate($this->img,rand(0,255),rand(0,255),rand(0,255));			//畫點			imagesetpixel($this->img,rand(1,$this->width-2),rand(1,$this->height-2),$randColor);		}				//畫干擾線		for($i=0;$i<$this->lineNum;$i++){			//設置隨機顏色			$randColor=imagecolorallocate($this->img,rand(0,200),rand(0,200),rand(0,200));			//畫線			imageline($this->img,rand(1,$this->width-2),rand(1,$this->height-2),rand(1,$this->height-2),rand(1,$this->width-2),$randColor);		}	}		//創建圖像	private function createImage(){		//創建一個真彩色圖像		$this->img=imagecreatetruecolor($this->width,$this->height);		//設置背景色		$bgColor=imagecolorallocate($this->img,rand(200,255),rand(200,255),rand(200,255));		//填充背景色		imagefill($this->img,0,0,$bgColor);		//設置邊框顏色		$borderColor=imagecolorallocate($this->img,0,0,0);		//畫一個邊框		imagerectangle($this->img,0,0,$this->width-1,$this->height-1,$borderColor);	}		//輸出圖像	private function printImg(){		if(imagetypes() & IMG_PNG){			//針對png			header("Content-Type:image/png");			imagepng($this->img);		}else if(imagetypes() & IMG_JPG){			//針對jpg			header("Content-Type:image/jpeg");			imagejpeg($this->img,null,100);		}else if(imagetypes() & IMG_GIF){			//針對Gif			header("Content-Type:image/gif");			imagegif($this->img);		}else if(imagetypes() & IMG_WBMP){			// 針對 WBMP			header('Content-Type: image/vnd.wap.wbmp');			imagewbmp($this->img);		}else{			die('No image support in this PHP server');		}	}		//創建驗證碼	private function createCode(){		//默認字符串		$codes="123456789abcdefghijkmnpqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXY";		//生成驗證碼		$code="";		for($i=0;$i<$this->num;$i++){			$code.=$codes{rand(0,strlen($codes)-1)};		}		return $code;	}		//析構函數用于銷毀圖像資源	function __destruct(){		imagedestroy($this->img);	}  }

     

    這里我使用的畫字體的函數是imagettftext(),因為這個函數可以自定義字體樣式,從代碼中也能看出來,傳入的參數有個字體文件屬性,如果不喜歡用這個函數可以使用imagestring()函數也行,只不過個人覺得這個函數的默認字體大小,也不好看。還是自定義字體看著舒服點。接下來是調用驗證碼類

     

    <?php	//開啟Session	session_start();	//引入驗證碼類	include("vcode.class.php");	//創建驗證碼類	$vcode=new Vcode();	//將獲取的驗證碼存入到session中	$_SESSION['code']=$vcode->getCode();	//$vcode->set("pointNum",10);//自定義干擾點個數	//$vcode->set("lineNum",10);//自定義干擾線個數	//$vcode->set("fontFile","wawa.ttf");//自定義字體文件	//輸出圖像	$vcode->outImg();

    代碼到這里驗證碼就實現了,直接調用該文件也能看到驗證碼,下面使用一個簡單的登錄表單使用該驗證碼

     

     

    <?php	//開啟Session	session_start();	//判斷是否提交	if(isset($_POST['dosubmit'])){		//獲取session中的驗證碼并轉為小寫		$sessionCode=strtolower($_SESSION['code']);		//獲取輸入的驗證碼		$code=strtolower($_POST['code']);		//判斷是否相等		if($sessionCode==$code){			echo "<script type='text/javascript'>alert('驗證碼正確!');</script>";		}else{			echo "<script type='text/javascript'>alert('驗證碼錯誤!');</script>";		}	}?><!DOCTYPE html><html>	<head>		<title></title>		<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>		<style type="text/css">			*{margin:0px;padding:0px;}			ul{				width:400px;				list-style:none;				margin:50px auto;			}						li{				padding:12px;				position:relative;			}						label{				width:80px;				display:inline-block;				float:left;				line-height:30px;			}						input[type='text'],input[type='password']{				height:30px;			}						img{				margin-left:10px;			}						input[type="submit"]{				margin-left:80px;				padding:5px 10px;			}		</style>	</head>	<body>		<form action="login.php" method="post">			<ul>				<li>					<label>用戶名:</label>					<input type="text" name="username"/>				</li>				<li>					<label>密碼:</label>					<input type="password" name="password"/>				</li>				<li>					<label>驗證碼:</label>					<input type="text" name="code" size="4" style="float:left"/>					<img src="image_002.php" onclick="this.src='image_002.php?Math.random()'"/>				</li>				<li>					<input type="submit" value="登錄" name="dosubmit"/>				</li>			</ul>		</form>	</body></html>

    實現的效果:

     

    PHP編程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本精品久久久久影院| 亚洲丁香久久久| 日韩激情在线视频| 亚洲第一区在线观看| 福利视频一区二区| 97精品一区二区视频在线观看| 国产精品久久久久9999| 国产精品入口夜色视频大尺度| 高清欧美性猛交xxxx| 精品视频在线播放| 国产精品日韩av| 亚洲人成网站999久久久综合| 日韩免费中文字幕| 97视频国产在线| 成人黄色片网站| 欧美国产一区二区三区| 这里只有精品视频在线| 亚洲mm色国产网站| 国产精品日韩在线播放| 亚洲精品久久久久| 亚洲视频精品在线| 欧美一级片一区| 亚洲色图50p| 最近2019年日本中文免费字幕| 欧美一区二区三区免费观看| 欧美午夜久久久| 欧美亚洲伦理www| 在线观看欧美www| 久久精品中文字幕免费mv| 伊人久久大香线蕉av一区二区| 国产啪精品视频网站| 成人激情视频在线观看| 热re99久久精品国产66热| 日韩极品精品视频免费观看| 久久这里只有精品视频首页| 国产成人啪精品视频免费网| 国产a∨精品一区二区三区不卡| 久久亚洲精品中文字幕冲田杏梨| 日韩在线一区二区三区免费视频| 欧美一级高清免费| 秋霞成人午夜鲁丝一区二区三区| 日韩精品中文在线观看| 青青久久av北条麻妃黑人| 福利视频一区二区| 亚洲网站视频福利| 亚洲女人被黑人巨大进入| 岛国av午夜精品| 亚洲第一中文字幕| 日韩欧美国产视频| 国产精品99久久久久久白浆小说| 色久欧美在线视频观看| 97香蕉久久超级碰碰高清版| 亚洲女人被黑人巨大进入al| 日韩av免费一区| 亚洲影视九九影院在线观看| 欧美国产第一页| 日韩中文在线不卡| 97精品国产97久久久久久春色| 中文字幕亚洲欧美在线| 亚洲精品欧美一区二区三区| 日韩大陆欧美高清视频区| 亚洲福利小视频| 欧美日韩国产第一页| 亚洲一区二区免费在线| 91香蕉嫩草神马影院在线观看| 欧美日韩另类字幕中文| 亚洲加勒比久久88色综合| 狠狠躁天天躁日日躁欧美| 日韩成人网免费视频| 亚洲一区中文字幕| 欧美中文字幕视频| 欧美精品video| 日韩美女视频在线观看| 美女精品视频一区| 日韩中文字幕视频在线观看| 成人黄色av免费在线观看| 国产精品www色诱视频| 国产精品久久久久久久久男| 51久久精品夜色国产麻豆| 97国产suv精品一区二区62| 日韩中文字幕网站| 色综合影院在线| 国产99视频在线观看| 国产精品久久久久久av| 亚洲精品免费网站| 久久久91精品| 日韩天堂在线视频| 国产精品久久久久99| 国产在线a不卡| 在线精品国产欧美| 国产精品一区专区欧美日韩| 国产不卡av在线免费观看| 国产成人在线视频| 成人激情春色网| 26uuu另类亚洲欧美日本老年| 色婷婷av一区二区三区在线观看| 欧美日韩综合视频网址| 中文字幕av一区中文字幕天堂| 欧美丝袜一区二区三区| 精品久久久久久| 91久久久国产精品| 国产99视频在线观看| 欧美国产精品人人做人人爱| 5252色成人免费视频| 亚洲国产精品网站| 91午夜在线播放| 欧美黑人xxxⅹ高潮交| 国产成人综合精品在线| 一区二区欧美久久| 九九精品在线观看| 亚洲sss综合天堂久久| 中文字幕久热精品在线视频| 91在线视频精品| 日本精品久久电影| 日韩av一区在线| 国产精品亚洲欧美导航| 久久久久久久久爱| 美女黄色丝袜一区| 91久久精品国产| 亚洲精品欧美极品| 久久综合伊人77777尤物| 国产精品亚洲网站| 日韩精品免费看| 91成人在线播放| 日韩欧美在线国产| xxav国产精品美女主播| 国产欧美一区二区三区在线| 国产va免费精品高清在线观看| 久久的精品视频| 亚洲性av在线| 操91在线视频| 国产丝袜一区二区三区| 日韩在线视频免费观看高清中文| 亚洲影院污污.| 日韩av免费在线| 夜夜嗨av一区二区三区免费区| 国产欧美日韩中文字幕在线| 日韩视频永久免费观看| 中文字幕亚洲欧美一区二区三区| 91免费看片网站| 欧美国产日产韩国视频| 91九色视频在线| 国产精品电影观看| 国产精品午夜视频| 国产不卡av在线免费观看| 狠狠色香婷婷久久亚洲精品| 国产精品一区二区三区免费视频| 国语自产偷拍精品视频偷| 欧美视频在线观看 亚洲欧| 国产91精品久久久久久久| 91沈先生作品| 自拍视频国产精品| 精品无人区乱码1区2区3区在线| 色爱av美腿丝袜综合粉嫩av| 国产精品香蕉在线观看| 91久久久久久国产精品| 中文字幕日韩欧美| 色噜噜狠狠狠综合曰曰曰88av| 中文字幕v亚洲ⅴv天堂| 91福利视频网| 日韩高清电影免费观看完整| 日韩在线观看免费全集电视剧网站| 久久伊人91精品综合网站| 欧美在线xxx|