寫驗證碼的動機是之前使用的一直是別人的,想使用一下自己的作品。使用在實現了面向過程的php驗證碼後,便想著封裝了一下。
驗證碼整體實現的思路是相似的:1)繪製乙個畫布、分配背景顏色;2)繪圖;3)輸出影象;4)銷毀畫布(釋放記憶體)。
第一步,我實現的還是獲得隨機字元的方法:
/**
* 功能:隨機生成乙個驗證碼函式
* */
public function getcode()
return $this->_content;
}
$code = new verifycode(4, 2);
echo $code->getcode();
此時實現的效果為:
第二步:繪製驗證碼。
我想在例項化後可以按照下面的方式呼叫:
其中在初始化的時候,進行字元個數和型別(數字、大小寫字母的組合形式)的分配。在初始化即建構函式中實現:
function __construct($code_len, $type = 0)
可以通過不同的傳值來驗證。
其餘的基本思路就是1)繪製乙個畫布、分配背景顏色;2)繪圖;3)輸出影象;4)銷毀畫布(釋放記憶體)。所以,在這裡直接給出完整的**。
<?php
/** * verify code class
* * $code_len 驗證碼顯示的字元個數
* $type 驗證碼型別(預設 0-全為數字, 1-小寫字母和數字, 2-小寫、大寫、數字組成)
* @author machaohui* */
class verifycode
public function setwidth( $_width )
public function setheight( $_height )
public function setfontsize( $_fontsize )
public function setx( $_x )
public function sety( $_y )
/*** 功能:隨機生成乙個驗證碼函式
* */
public function getcode()
return $this->_content;
} /**
* show verify code.
* */
public function show( $_prefix = 'png' )
// 分配畫布背景顏色
switch ( mt_rand() % 4 )
//2) 開始繪圖
//繪製背景
imagefill($this->_image, $this->_config[3], $this->_config[4], $_bg);
//分配字型顏色
/*switch ( mt_rand() % 5 ) */
$_color = imagecolorallocate( $this->_image, 111, 0, 55 );
$_color = imagecolorallocate( $this->_image, 0, 77, 0 );
$_color = imagecolorallocate( $this->_image, 0, 0, 160 );
$_color = imagecolorallocate( $this->_image, 221, 111, 0 );
$_color = imagecolorallocate( $this->_image, 220, 0, 0 );
//繪製邊框
//imagerectangle($this->_image, $this->_config[3], $this->_config[4],
//$this->_config[0]-1, $this->_config[1]-1, $_color[rand(0,4)]);
//新增干擾點
for( $i=0; $i<200; $i++ )
//新增干擾線
for( $i=0; $i<5; $i++ )
//繪製驗證碼內容(乙個個字元繪製)
$code_con = $this->getcode();
$_length = strlen($code_con);
//$_xoffset = ($this->_config[0] - 2 * $this->_config[3]) / $_length;
$_yoffset = ($this->_config[1] - $this->_config[4])/2;
for ($i=0; $i < $this->_code_len; $i++)
//3) 根據不同的要求輸出對應格式的影象
使用:在表單中實現
效果:
用文字類表達邏輯應該有助於自己能力的提公升。
實踐中摸索著前進!!!
php封裝驗證碼類
關於類中用到的方法會在另乙個文章裡作說明,用ctrl f搜尋你想看的方法就行 建立的類名是code類,所以呼叫時new乙個物件,呼叫方法即可,如下。code new code 4,2,100,100 echo code outimage 類的屬性和方法 class code public funct...
PHP實現驗證碼
目前,不少 為了防止使用者利用機械人自動註冊 登入 灌水,都採用了驗證碼技術。所謂驗證碼,就是將一串隨機產生的數字或符號,生成一幅,裡加上一些干擾象素 防止 ocr 由使用者肉眼識別其中的驗證碼資訊,輸入表單提交 驗證,驗證成功後才能使用某項功能。我們這裡展示了如何編寫 php程式實現驗證碼功能 一...
php實現驗證碼
繪製驗證碼 num 5 str getcode num,2 建立畫布 width num 20 height 30 im imagecreatetruecolor width,height color 0 imagecolorallocate im,100,18,199 color 1 imagec...