php驗證碼實現及使用 封裝版

2021-06-17 22:00:32 字數 3183 閱讀 3630

寫驗證碼的動機是之前使用的一直是別人的,想使用一下自己的作品。使用在實現了面向過程的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...