php驗(yàn)證碼的制作思路和實(shí)現(xiàn)方法
一、制作思路
由于注冊(cè)的時(shí)候常常會(huì)用到注冊(cè)碼來(lái)防止機(jī)器惡意注冊(cè),這里我發(fā)表一個(gè)產(chǎn)生png圖片驗(yàn)證碼的基本圖像,簡(jiǎn)單的思路分析:
1、產(chǎn)生一張png的圖片
2、為圖片設(shè)置背景色
3、設(shè)置字體顏色和樣式
4、產(chǎn)生4位數(shù)的隨機(jī)的驗(yàn)證碼
5、把產(chǎn)生的每個(gè)字符調(diào)整旋轉(zhuǎn)角度和位置畫(huà)到png圖片上
6、加入噪點(diǎn)和干擾線防止注冊(cè)機(jī)器分析原圖片來(lái)惡意注冊(cè)
7、輸出圖片
8、釋放圖片所占內(nèi)存
二、實(shí)現(xiàn)方法
authcode.php文件
<?php session_start (); header ( 'Content-type: image/png' ); //創(chuàng)建圖片 $im = imagecreate($x=130,$y=45 ); $bg = imagecolorallocate($im,rand(50,200),rand(0,155),rand(0,155)); //第一次對(duì) imagecolorallocate() 的調(diào)用會(huì)給基于調(diào)色板的圖像填充背景色 $fontColor = imageColorAllocate ( $im, 255, 255, 255 ); //字體顏色 $fontstyle = 'rock.ttf'; //字體樣式,這個(gè)可以從c:\windows\Fonts\文件夾下找到,我把它放到和authcode.php文件同一個(gè)目錄,這里可以替換其他的字體樣式 //產(chǎn)生隨機(jī)字符 for($i = 0; $i < 4; $i ++) { $randAsciiNumArray = array (rand(48,57),rand(65,90)); $randAsciiNum = $randAsciiNumArray [rand ( 0, 1 )]; $randStr = chr ( $randAsciiNum ); imagettftext($im,30,rand(0,20)-rand(0,25),5+$i*30,rand(30,35),$fontColor,$fontstyle,$randStr); $authcode .= $randStr; } $_SESSION['authcode'] = $randFourStr;//用戶(hù)和用戶(hù)輸入的驗(yàn)證碼做比較 //干擾線 for ($i=0;$i<8;$i++){ $lineColor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)); imageline ($im,rand(0,$x),0,rand(0,$x),$y,$lineColor); } //干擾點(diǎn) for ($i=0;$i<250;$i++){ imagesetpixel($im,rand(0,$x),rand(0,$y),$fontColor); } imagepng($im); imagedestroy($im); ?>
效果圖:
以上就是php驗(yàn)證碼的制作思路和實(shí)現(xiàn)方法,希望對(duì)大家的學(xué)習(xí)有所幫助。
- php圖片驗(yàn)證碼代碼
- php 數(shù)學(xué)運(yùn)算驗(yàn)證碼實(shí)現(xiàn)代碼
- php5 圖片驗(yàn)證碼實(shí)現(xiàn)代碼
- php 生成隨機(jī)驗(yàn)證碼圖片代碼
- PHP驗(yàn)證碼類(lèi)代碼( 最新修改,完全定制化! )
- PHP 驗(yàn)證碼的實(shí)現(xiàn)代碼
- 如何用php生成扭曲及旋轉(zhuǎn)的驗(yàn)證碼圖片
- php ci框架驗(yàn)證碼實(shí)例分析
- 一個(gè)漂亮的php驗(yàn)證碼類(lèi)(分享)
- PHP驗(yàn)證碼函數(shù)代碼(簡(jiǎn)單實(shí)用)
- PHP 驗(yàn)證碼不顯示只有一個(gè)小紅叉的解決方法
- 一個(gè)好用的PHP驗(yàn)證碼類(lèi)實(shí)例分享
- ThinkPHP驗(yàn)證碼使用簡(jiǎn)明教程
- PHP使用CURL實(shí)現(xiàn)對(duì)帶有驗(yàn)證碼的網(wǎng)站進(jìn)行模擬登錄的方法
- 完美解決thinkphp驗(yàn)證碼出錯(cuò)無(wú)法顯示的方法
- 如何使用PHP對(duì)網(wǎng)站驗(yàn)證碼進(jìn)行破解
- php生成動(dòng)態(tài)驗(yàn)證碼gif圖片
- php生成驗(yàn)證碼函數(shù)
- PHP實(shí)現(xiàn)GIF圖片驗(yàn)證碼
- php實(shí)現(xiàn)點(diǎn)擊可刷新驗(yàn)證碼
- php實(shí)現(xiàn)可運(yùn)算的驗(yàn)證碼
- php驗(yàn)證碼生成代碼
相關(guān)文章
PHP數(shù)組及條件,循環(huán)語(yǔ)句學(xué)習(xí)
PHP數(shù)組及條件,循環(huán)語(yǔ)句學(xué)習(xí),需要的朋友可以參考下2012-11-11PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED問(wèn)題解決辦法
這篇文章主要介紹了PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED問(wèn)題解決辦法,需要的朋友可以參考下2014-05-05常用的PHP數(shù)據(jù)庫(kù)操作方法(MYSQL版)
最近一直在折騰自己的網(wǎng)站首頁(yè),寫(xiě)的大部分PHP腳本都要用到和MYSQL數(shù)據(jù)庫(kù)相關(guān)的操作,今天把這些方法和大家分享一下,希望大家能多多交流!2011-06-06PHP獲取和操作配置文件php.ini的幾個(gè)函數(shù)介紹
當(dāng)你沒(méi)辦法修改php.ini配置文件怎么辦,沒(méi)事,php有一套設(shè)置和獲取配置信息的函數(shù)2013-06-06PHP實(shí)現(xiàn)判斷數(shù)組是一維、二維或幾維的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)判斷數(shù)組是一維、二維或幾維的方法,涉及php遞歸操作及數(shù)組相關(guān)判定技巧,需要的朋友可以參考下2017-02-02PHP中實(shí)現(xiàn)接收多個(gè)name相同但Value不相同表單數(shù)據(jù)實(shí)例
這篇文章主要介紹了PHP中實(shí)現(xiàn)接收多個(gè)name相同但Value不相同表單數(shù)據(jù)實(shí)例,需要的朋友可以參考下2015-02-02php實(shí)現(xiàn)的網(wǎng)頁(yè)版剪刀石頭布游戲示例
這篇文章主要介紹了php實(shí)現(xiàn)的網(wǎng)頁(yè)版剪刀石頭布游戲,涉及php數(shù)組遍歷、比較及隨機(jī)數(shù)組調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2016-11-11