国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php制作動態隨機驗證碼

2024-05-04 21:54:48
字體:
來源:轉載
供稿:網友

 這篇文章主要介紹了php制作動態隨機驗證碼的方法的相關資料,需要的朋友可以參考下

  

驗證碼(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機還是人的公共全自動程序。可以防止:惡意破解密碼、刷票、論壇灌水,有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試,實際上用驗證碼是現在很多網站通行的方式,我們利用比較簡易的方式實現了這個功能。

這個問題可以由計算機生成并評判,但是必須只有人類才能解答。由于計算機無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。

Php制作動態驗證碼是基于php的圖像處理,下面首先介紹一下php的圖像處理。

一.php圖像處理簡介

PHP5中,動態圖象的處理要比以前容易得多。PHP5在php.ini文件中包含了GD擴展包,只需去掉GD擴展包的相應注釋就可以正常使用了。PHP5包含的GD庫正是升級的GD2庫,其中包含支持真彩圖像處理的一些有用的JPG功能。

一般生成的圖形,通過PHP的文檔格式存放,但可以通過HTML的圖片插入方式SRC來直接獲取動態圖形。比如,驗證碼、水印、微縮圖等。

創建圖像的一般流程:

1).設定標頭,告訴瀏覽器你要生成的MIME類型。

2).創建一個圖像區域,以后的操作都將基于此圖像區域。

3).在空白圖像區域繪制填充背景。

4).在背景上繪制圖形輪廓輸入文本。

5).輸出最終圖形。

6).清除所有資源。

7).其他頁面調用圖像。

第一步,設置文件MIME類型,輸出類型 將輸出類型改成圖像流

 

代碼如下:
header('Content-Type: image/png;');

 

一般生成的圖像可以是png,jpeg,gif,wbmp

第二步,創建一個圖形區域,圖像背景

imagecreatetruecolor() 返回一個圖像標識符,代表了一幅大小為 x_size 和 y_size 的黑色圖像。語法:resource imagecreatetruecolor ( int $width , int $height )

 

代碼如下:
$im = imagecreatetruecolor(200,200);

 

第三步,在空白圖像區域繪制填充背景

要有顏色填充器;imagecolorallocate -- 為一幅圖像分配顏色;語法:int imagecolorallocate ( resource $image , int $red , int $green , int $blue )

 

代碼如下:
$blue = imagecolorallocate($im,0,102,255);

 

將這個blue顏色填充到背景上去;imagefill -- 區域填充;語法:bool imagefill ( resource $image , int $x , int $y , int $color )

 

代碼如下:
imagefill($im,0,0,$blue);

 

第四步,在藍色的背景上輸入一些線條,文字等

顏色填充器

 

代碼如下:
$white = imagecolorallocate($im,255,255,255);

 

畫兩條線段:imageline

imageline() 用 color 顏色在圖像 image 中從坐標 x1,y1 到 x2,y2(圖像左上角為 0, 0)畫一條線段。語法:bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

 

代碼如下:
imageline($im,0,0,200,200,$white);
imageline($im,200,0,0,200,$white);

 

水平地畫一行字符串:imagestring

imagestring() 用 col 顏色將字符串 s 畫到 image 所代表的圖像的 x,y 坐標處(這是字符串左上角坐標,整幅圖像的左上角為 0,0)。如果font 是 1,2,3,4 或 5,則使用內置字體。語法:bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )

 

代碼如下:
imagestring($im,5,66,20,'jingwhale',$white);

 

第五步,輸出最終圖形

imagepng() 將 GD 圖像流(image)以 PNG 格式輸出到標準輸出(通常為瀏覽器),或者如果用 filename 給出了文件名則將其輸出到該文件。語法:bool imagepng ( resource $image [, string $filename ] )

 

代碼如下:
imagepng($im);

 

第六步,我要將所有的資源全部清空

imagedestroy() 釋放與 image 關聯的內存。語法:bool imagedestroy ( resource $image )

 

代碼如下:
imagedestroy($im);

 

其他頁面(html)調用創建的圖形

 

代碼如下:
<img src="Demo4.php" alt="PHP創建的圖片" />

 

示例代碼如下:

 

代碼如下:
<?php
//第一步,設置文件MIME類型
header('Content-Type: image/png;');
//第二步,創建一個圖形區域,圖像背景
$im = imagecreatetruecolor(200,200);
//第三步,在空白圖像區域繪制填充背景
$blue = imagecolorallocate($im,0,102,255);
imagefill($im,0,0,$blue);
//第四步,在藍色的背景上輸入一些線條,文字等
$white = imagecolorallocate($im,255,255,255);
imageline($im,0,0,200,200,$white);
imageline($im,200,0,0,200,$white);
imagestring($im,5,66,20,'Jing.Whale',$white);
//第五步,輸出最終圖形
imagepng($im);
//第六步,我要將所有的資源全部清空
imagedestroy($im);
?>

 

顯示效果:

php制作動態隨機驗證碼   武林網

二.創建動態驗證碼

附:代碼源地址https://github.com/VeVb-/php-captcha

1. 創建帶驗證碼的圖片,并模糊背景

隨機碼采用16進制;模糊背景即在圖片背景加上線條、雪花等。

1)創建隨機碼

代碼如下:
for ($i=0;$i<$_rnd_code;$i++) {
$_nmsg .= dechex(mt_rand(0,15));
}
string dechex ( int $number ),返回一字符串,包含有給定 number 參數的十六進制表示。

 

2)保存在session

代碼如下:$_SESSION['code'] = $_nms

 

3)創建圖片

共3頁上一頁123下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼玛县| 龙口市| 白城市| 温泉县| 六盘水市| 中山市| 叶城县| 永泰县| 汕尾市| 淮南市| 微山县| 开封市| 图们市| 吉安市| 封开县| 泰和县| 吉木乃县| 乐亭县| 德兴市| 通榆县| 东兰县| 东阳市| 莎车县| 交城县| 阜阳市| 牡丹江市| 合山市| 江北区| 洛扎县| 濉溪县| 农安县| 通城县| 黄梅县| 翁源县| 拜城县| 平昌县| 禄劝| 阜新市| 宜良县| 延长县| 瑞金市|