php驗證碼的制作思路和實現(xiàn)方法
一、制作思路
由于注冊的時候常常會用到注冊碼來防止機器惡意注冊,這里我發(fā)表一個產(chǎn)生png圖片驗證碼的基本圖像,簡單的思路分析:
1、產(chǎn)生一張png的圖片
2、為圖片設(shè)置背景色
3、設(shè)置字體顏色和樣式
4、產(chǎn)生4位數(shù)的隨機的驗證碼
5、把產(chǎn)生的每個字符調(diào)整旋轉(zhuǎn)角度和位置畫到png圖片上
6、加入噪點和干擾線防止注冊機器分析原圖片來惡意注冊
7、輸出圖片
8、釋放圖片所占內(nèi)存
二、實現(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)); //第一次對 imagecolorallocate() 的調(diào)用會給基于調(diào)色板的圖像填充背景色
$fontColor = imageColorAllocate ( $im, 255, 255, 255 ); //字體顏色
$fontstyle = 'rock.ttf'; //字體樣式,這個可以從c:\windows\Fonts\文件夾下找到,我把它放到和authcode.php文件同一個目錄,這里可以替換其他的字體樣式
//產(chǎn)生隨機字符
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;//用戶和用戶輸入的驗證碼做比較
//干擾線
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);
}
//干擾點
for ($i=0;$i<250;$i++){
imagesetpixel($im,rand(0,$x),rand(0,$y),$fontColor);
}
imagepng($im);
imagedestroy($im);
?>
效果圖:

以上就是php驗證碼的制作思路和實現(xiàn)方法,希望對大家的學(xué)習(xí)有所幫助。
- php圖片驗證碼代碼
- php 數(shù)學(xué)運算驗證碼實現(xiàn)代碼
- php5 圖片驗證碼實現(xiàn)代碼
- php 生成隨機驗證碼圖片代碼
- PHP驗證碼類代碼( 最新修改,完全定制化! )
- PHP 驗證碼的實現(xiàn)代碼
- 如何用php生成扭曲及旋轉(zhuǎn)的驗證碼圖片
- php ci框架驗證碼實例分析
- 一個漂亮的php驗證碼類(分享)
- PHP驗證碼函數(shù)代碼(簡單實用)
- PHP 驗證碼不顯示只有一個小紅叉的解決方法
- 一個好用的PHP驗證碼類實例分享
- ThinkPHP驗證碼使用簡明教程
- PHP使用CURL實現(xiàn)對帶有驗證碼的網(wǎng)站進行模擬登錄的方法
- 完美解決thinkphp驗證碼出錯無法顯示的方法
- 如何使用PHP對網(wǎng)站驗證碼進行破解
- php生成動態(tài)驗證碼gif圖片
- php生成驗證碼函數(shù)
- PHP實現(xiàn)GIF圖片驗證碼
- php實現(xiàn)點擊可刷新驗證碼
- php實現(xiàn)可運算的驗證碼
- php驗證碼生成代碼
相關(guān)文章
PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù)解析
這篇文章主要介紹了PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù)解析,本文用代碼實例講解了PHP中構(gòu)造函數(shù)和析構(gòu)函數(shù),需要的朋友可以參考下2014-10-10
解析php中array_merge與array+array的區(qū)別
本篇文章是對php中array_merge與array+array的區(qū)別進行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
php中關(guān)于codeigniter的xmlrpc的類在進行數(shù)據(jù)交換時的類型問題
在使用codeigniter的xmlrpc類進行客戶端/服務(wù)端請求應(yīng)答的時候,客戶端需要發(fā)送請求參數(shù)給服務(wù)端,服務(wù)端在接受到參數(shù)之后進行參數(shù)分析,分拆參數(shù)之后分配給正確的方法進行處理,處理之后反饋一個response給客戶端。2011-07-07
PHP使用HTML5 FileApi實現(xiàn)Ajax上傳文件功能示例
這篇文章主要介紹了PHP使用HTML5 FileApi實現(xiàn)Ajax上傳文件功能,結(jié)合實例形式分析了HTML5 FileApi的功能、原理及php使用HTML5 FileApi實現(xiàn)ajax上傳的相關(guān)操作技巧,需要的朋友可以參考下2019-07-07

