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

首頁 > 編程 > PHP > 正文

PHP一個簡單的驗證碼類

2020-03-22 20:27:17
字體:
來源:轉載
供稿:網友
  • 初學Php,因為很多地方都涉及到驗證碼的功能,網上雖然有很多驗證碼的例子,但是看了之后都不是很滿意。于是,自己隨便看了一下書,寫了一個簡單地Php驗證碼類,可以提供簡單的生成一個驗證碼類。當然,這個類也是剛剛寫好,還有很多可以改進的地方。

    下面是代碼。

    <?php/*	2014/3/28	@程序與算法*/html' target='_blank'>class checkCode{	private $m_fontFile = "";  //儲存引入的字體文件路徑	private $m_fontSize = 16;  // 字體大小	private $m_str = "";  //儲存生成驗證碼的字符串	private $m_width = 80; //驗證碼圖片的寬度	private $m_heigh =  30; //驗證碼圖片的高度	private $m_bg = array("0xff", "0xff", "0xff");  //默認的背景顏色	private $m_tg = array("0x00", "0x00", "0x00");   //默認的字體顏色	private $m_ig;  //圖片變量	private $m_isbg = "";	private $m_istg = "";	private $m_codearray = array();  //動態生成驗證碼的字符數組,這里是0-9,a-z,A-Z	private $m_codeNum = 4; //驗證碼的長度		//構造函數,可以傳入寬度和高度,也可以使用默認的值	public function __construct($m_w = "", $m_h = "") 	{		$this->createCodeArray();  //用于生成隨機字符串		if ($m_w == "" || $m_h == "")		{			$this->m_ig = imagecreate($this->m_width, $this->m_heigh);		}		else		{			$this->m_ig = imagecreate($m_w, $m_h);			$this->m_width = $m_w;			$this->m_heigh = $m_h;		}		$this->setBgColor($this->m_bg[0], $this->m_bg[1], $this->m_bg[2]);	}	public function __destruct()	{		imagedestroy($this->m_ig);	}		public function setBgColor($m_r, $m_g, $m_b)  //設置驗證碼的背景顏色	{		$this->m_ig = imagecreate($this->m_width, $this->m_heigh);		$this->m_isbg = imagecolorallocate($this->m_ig, $m_r, $m_g, $m_b);		return $this->m_isbg;	}	public function setTxColor($m_r, $m_g, $m_b)  //設置字體顏色	{		$this->m_istg = imagecolorallocate($this->m_ig, $m_r, $m_g, $m_b);		return $this->m_istg;	}	public function setCodeCount($m_num) //設置驗證碼的長度	{		$this->m_codeNum = $m_num;	}	// 設置驗證碼的字符串,這個字符串可以是用戶自己設置的,也可以是由系統自動生成隨機的字符串	public function setCodeStr($str)  	{		$this->m_str = $str;	}	public function setCodeFontSize($size) //設置驗證碼字體的大小	{		$this->m_fontSize = $size;	}	public function setCodeFontFile($file) //設置字體類型,如果不調用這個函數,就使用默認的字體	{		if (file_exists($file))		{			$this->m_fontFile = $file;		}	}	public function createCodeArray()  //生成隨機字符串的數組	{		$m_aa = ord('A');		$m_AB = ord('a');		for ($m_i = 0; $m_i < 36; ++ $m_i)		{			if ($m_i >= 0 && $m_i < 10)			{				array_push($this->m_codearray, $m_i);			}			else			{				$m_temp = chr($m_aa + $m_i - 10);				array_push($this->m_codearray, $m_temp);				$m_temp = chr($m_AB + $m_i - 10);				array_push($this->m_codearray, $m_temp);			}		}	}	public function createMass()  //生成雜點	{		$m_line = imagecolorallocate($this->m_ig, 0xdd, 0xdd, 0xdd);		for ($m_i = 0; $m_i < ($this->m_width + $this->m_heigh) / 50; ++ $m_i)		{			$m_fx = rand(0, $this->m_width);			$m_fy = rand(0, $this->m_heigh);			$m_sx = rand(0, $this->m_width);			$m_sy = rand(0, $this->m_heigh);			imageline($this->m_ig, $m_fx, $m_fy, $m_sx, $m_sy, $m_line);		}		$m_point = imagecolorallocate($this->m_ig, 0x00, 0x00, 0x00);		for ($m_i = 0; $m_i < $this->m_width * $this->m_heigh / 50; ++ $m_i)		{			$m_fx = rand(0, $this->m_width);			$m_fy = rand(0, $this->m_heigh);			imagesetpixel($this->m_ig, $m_fx, $m_fy, $m_point);		}	}	private function deutCode()  //默認字體生成的驗證碼圖片	{		@$m_arrstr = str_split($this->m_str); 		//$this->createMass();		if ($this->m_str == "") 		{					for ($m_i = 0; $m_i < $this->m_codeNum; ++ $m_i)			{				$m_index = rand(0, count($this->m_codearray) - 1);				$m_tempx = ($this->m_width / $this->m_codeNum) * ($this->m_codeNum - 1) / $this->m_codeNum;				$m_w = $m_tempx * ($m_i + 1);				$m_dh = $this->m_heigh / 4;				$m_h = rand($m_dh * 0.6, $m_dh * 1.5);				imagestring($this->m_ig, $this->m_fontSize, $m_w, $m_h, $this->m_codearray[$m_index], $this->m_istg);			}		}		else		{			$m_len = count($m_arrstr);			for ($m_i = 0; $m_i < $m_len; ++ $m_i)			{				$m_tempx = ($this->m_width / $m_len) * ($m_len - 1) / $m_len;				$m_w = $m_tempx * ($m_i + 1);				$m_dh = $this->m_heigh / 4;				$m_h = rand($m_dh * 0.6, $m_dh * 1.5);				imagestring($this->m_ig, $this->m_fontSize, $m_w, $m_h, $m_arrstr[$m_i], $this->m_istg);			}		}		imagepng($this->m_ig);	}	private function chgeCode()  //新字體生成的驗證碼圖片	{		@$m_arrstr = str_split($this->m_str);		if ($this->m_str == "")		{			for ($m_i = 0; $m_i < $this->m_codeNum; ++ $m_i)			{				$m_index = rand(0, count($this->m_codearray) - 1);				$m_tempx = ($this->m_width / $this->m_codeNum) * ($this->m_codeNum - 1) / $this->m_codeNum;				$m_w = $m_tempx * ($m_i + 1);				$m_h = $this->m_heigh / 1.2;				$m_angel = rand(0, 60);				imagefttext($this->m_ig, $this->m_fontSize, $m_angel, $m_w, $m_h, $this->m_istg, $this->m_fontFile, $this->m_codearray[$m_index]);			}		}		else		{			$m_len = count($m_arrstr);			for ($m_i = 0; $m_i < $m_len; ++ $m_i)			{				$m_tempx = ($this->m_width / $m_len) * ($m_len - 1) / $m_len;				$m_w = $m_tempx * ($m_i + 1);				$m_h = $this->m_heigh / 1.2;				$m_angel = rand(0, 45);				imagefttext($this->m_ig, $this->m_fontSize, $m_angel, $m_w, $m_h, $this->m_istg, $this->m_fontFile, $m_arrstr[$m_i]);			}		}	}	public function getCode()  //獲取驗證碼的函數,這個函數就是相當于生成驗證碼	{		if ($this->m_istg == "")		{			$this->setTxColor($this->m_tg[0], $this->m_tg[1], $this->m_tg[2]);		}		$this->createMass();   //這個函數下面會有說明是一個生成隨機雜點的函數		if ($this->m_fontFile == "")		{			$this->deutCode();		}		else		{			$this->chgeCode();		}		imagepng($this->m_ig);	}}?>

    該類的使用方法一,這是最簡單的形式。

    1. 首先引入該類

    2. 初始化,不想類傳遞任何參數,全部使用默認、

    3. 生成驗證碼

    具體的代碼如下

    <?php include "checkCode.php";?><?php	header("Content-Type:image/png");	$m_code = new checkCode();	$m_code->getCode();?>
    方法二,通過傳遞參數,生成更加漂亮的驗證碼。(推薦使用這個方法,因為系統默認的字體不是很清晰而且比較?。?p>

    <?php include "checkCode.php";?><?php	header("Content-Type:image/png");	$m_code = new checkCode(100, 50); // 或者 $m_code = new checkCode(200, 50);傳遞寬度和高度	$m_code->setCodeFontFile("Arial.ttf"); //引入新的字體	$m_code->setCodeFontSize(22);  //設置字體大小	$m_code->setCodeCount(5);  //設置驗證碼的長度	//背景顏色參數為RGB的分量值, 0-255 使用十六進制 0x00-0xff	$m_code->setBgColor(0xdd, 0xcc, 0xcc);  	$m_code->setTxColor(0x00, 0x11, 0x22);  //,字體顏色同上	$m_code->getCode();?>

    效果圖。

    在上述的介紹中,還可以使用一個函數

    public function setCodeStr($str)
    {
    $this->m_str = $str;
    }

    這個函數用于接收用戶傳進來的字符串,比如說,$m_code->setCodeStr("12345678");

    那么生成的圖片里面的字符就是 12345678

    其實,在那個生成雜點的函數做的不是很好,可以再次接受用戶的輸入,來生成雜點??梢宰層脩魜磉x擇設置雜點的顏色,雜店的數量等等。。這些還是需要解決的。由于時間緊促,只能先把這個類實現到這個樣子了。

    PHP編程

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

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    国产精品一区二区3区| 久久国产天堂福利天堂| 成人有码在线视频| 一区二区三区高清国产| 尤物九九久久国产精品的分类| 91精品久久久久久久久中文字幕| 亚洲精品日韩在线| 另类图片亚洲另类| 欧美日韩国产一中文字不卡| 久久夜色精品国产| 高清欧美性猛交xxxx黑人猛交| 热久久美女精品天天吊色| 国产激情综合五月久久| 91美女片黄在线观看游戏| 亚洲四色影视在线观看| 日韩在线观看网站| 国产欧美精品在线| 日韩精品久久久久久福利| 亚洲精品国产综合区久久久久久久| 亚洲自拍偷拍色图| 午夜精品福利在线观看| 亚洲精品v欧美精品v日韩精品| 亚洲字幕在线观看| 国产精品美女999| 欧美一区第一页| 亚洲美女免费精品视频在线观看| 亚洲一区二区中文| 91在线国产电影| 亚洲a级在线播放观看| 国产亚洲免费的视频看| 欧美老肥婆性猛交视频| 久久99久国产精品黄毛片入口| 国产欧美日韩中文字幕在线| 欧美成aaa人片免费看| 久久天天躁狠狠躁夜夜av| 亚洲综合在线中文字幕| 欧美日韩美女视频| 色噜噜久久综合伊人一本| 一区国产精品视频| 热99精品只有里视频精品| 永久免费看mv网站入口亚洲| 一区二区成人精品| 最近2019中文字幕mv免费看| 欧美性感美女h网站在线观看免费| 亚洲第一网站免费视频| 精品久久久久久中文字幕大豆网| 亚洲高清福利视频| 久久这里有精品视频| 国产欧美日韩精品在线观看| 欧美电影在线观看高清| 国产精品久久久久高潮| 久久天天躁狠狠躁夜夜av| 成人网在线观看| 欧美成人在线免费| 国产成人自拍视频在线观看| 亚洲自拍偷拍第一页| 亚洲第一视频网站| 国产乱人伦真实精品视频| 日韩中文字幕视频在线观看| 91麻豆桃色免费看| 国产日韩在线精品av| 在线观看成人黄色| 成人一区二区电影| 超碰精品一区二区三区乱码| 一本一本久久a久久精品牛牛影视| 中文字幕在线视频日韩| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品久久久久久搜索| 国产亚洲精品高潮| 国内揄拍国内精品少妇国语| 在线看日韩欧美| 欧美日韩国产中文精品字幕自在自线| 久久久免费精品视频| 久久久久久久久久久国产| 91网站免费看| 日韩人体视频一二区| 91人人爽人人爽人人精88v| 亚洲跨种族黑人xxx| 欧美最顶级丰满的aⅴ艳星| 亚洲片在线资源| 亚洲国内精品视频| 日韩精品中文字幕视频在线| 欧美在线欧美在线| 欧美成人精品在线视频| 欧美精品性视频| 日韩一区二区av| 91香蕉国产在线观看| 国产成人精品在线| 97视频在线观看免费| 国产一区二区三区毛片| 久久精品国产69国产精品亚洲| 视频一区视频二区国产精品| 日韩在线观看av| 久久久av网站| 久久精品电影一区二区| 国产香蕉精品视频一区二区三区| 久久久999精品| 久久久久亚洲精品国产| 日韩经典第一页| 亚洲综合中文字幕在线| 国产精品ⅴa在线观看h| 久久伊人91精品综合网站| 国产精品亚洲自拍| 国产精品极品在线| 美日韩精品视频免费看| 97免费在线视频| 国产精品久久久久久亚洲影视| 亚洲男人av电影| 日韩精品在线影院| 久久久久99精品久久久久| 日韩暖暖在线视频| 超在线视频97| 国产成人aa精品一区在线播放| 欧美日本高清一区| 91在线观看免费网站| 日韩精品免费看| 欧美综合激情网| 57pao国产成人免费| 最新中文字幕亚洲| 欧美www视频在线观看| 中文字幕亚洲在线| 91高清视频免费| 欧美尤物巨大精品爽| 久久成人18免费网站| 中文字幕日韩专区| 亚洲精品www久久久久久广东| 久久精品视频网站| 成人做爰www免费看视频网站| 1769国产精品| 欧美性猛交xxxx富婆| 久久免费国产视频| 九九久久精品一区| 欧美激情区在线播放| 亚洲精品免费网站| 一区二区三区久久精品| 亚洲国产又黄又爽女人高潮的| 成人h视频在线观看播放| 久久国产精品久久久久| 久久综合伊人77777尤物| 欧美大片在线免费观看| 久久人91精品久久久久久不卡| 欧美性xxxxhd| 精品亚洲aⅴ在线观看| 精品国产电影一区| 欧美一级免费看| 亚洲在线免费视频| 欧美国产日韩xxxxx| 久久影院资源网| 91av在线播放视频| 欧美亚洲国产另类| 久久久极品av| 91精品国产91久久久久久久久| 欧美放荡办公室videos4k| 久久夜色精品国产欧美乱| 55夜色66夜色国产精品视频| 欧美视频专区一二在线观看| 国产欧美一区二区白浆黑人| 色av吧综合网| 成人自拍性视频| 亚洲欧美视频在线| 久久久久亚洲精品国产| 亚洲欧美国产视频| 91丨九色丨国产在线| 国产日韩在线亚洲字幕中文|