Home  >  Article  >  Backend Development  >  Implementation of PHP verification code function

Implementation of PHP verification code function

巴扎黑
巴扎黑Original
2016-11-23 13:32:12878browse

/**

*Generate verification code image

*/

public function actionVerfiycode() {

Header ( "Content-type: image/gif" );

$border = 0; //Whether you want a border 1 yes: 0 no

$how = 4; //Verification code digits

$w = $how * 15; //Picture width

$h = 20; //Picture height

$fontsize = 5; //Font size

$alpha = "abcdefghijkmnopqrstuvwxyz"; //Verification code content 1: letters

$number = "0123456789"; //Verification code content 2: numbers

$randcode = ""; //Verification code string initialization

srand ( ( double ) microtime () * 1000000 ); //Initialize random number seed

$im = ImageCreate ( $w, $h ); //Create verification image

$bgcolor = ImageColorAllocate ( $im, 255, 255, 255 ); //Set the background color

ImageFill ( $im, 0, 0, $bgcolor ); // Fill the background color

if ($border) {

$black = ImageColorAllocate ( $im, 0, 0, 0 ); //Set the border color

ImageRectangle ( $im, 0, 0, $w - 1, $h - 1, $black ); //Draw the border

}

for($i = 0; $ i < $how; $i ++) {

$alpha_or_number = mt_rand (0, 1); //Letters or numbers

$str = $alpha_or_number ? $alpha : $number;

$which = mt_rand ( 0, strlen ( $str ) - 1 ); // Which character to take

$code = substr ( $str, $which, 1 ); // Take the character

$j = ! $i ? 4 : $j + 15; //Draw character position

$color3 = ImageColorAllocate ( $im, mt_rand ( 0, 100 ), mt_rand ( 0, 100 ), mt_rand ( 0, 100 ) ); // Character color will be drawn

ImageChar ( $im , $fontsize, $j, 3, $code, $color3 ); //Draw characters

$randcode .= $code; //Add the verification code string bit by bit

}

for($i = 0; $i < 5; $i ++) //Draw background interference lines

{

$color1 = ImageColorAllocate ( $im, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) ); //Interference line color

ImageArc ( $im, mt_rand ( - 5, $w ), mt_rand ( - 5, $h ), mt_rand ( 20, 300 ), mt_rand ( 20, 200 ), 55, 44, $color1 ); //Interference line

}

for($i = 0; $i < $how * 40; $i ++) //Draw background interference points

{

$color2 = ImageColorAllocate ( $im, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) ); //Interference point color

ImageSetPixel ( $im, mt_rand ( 0, $w ), mt_rand ( 0 , $h ), $color2 ); //Interference point

}

$session=new CHttpSession;

$session->open();

Yii::app()->session-> add('randcode',$randcode);

/*End of drawing*/

Imagegif ($im);

ImageDestroy ($im);

/*End of drawing*/

}


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:PHP registration codeNext article:PHP registration code