Home > Article > Backend Development > Implementation of PHP verification code function
/**
*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*/
}