/**
* Generate a verification code Image
*
* @ Param String $ name of the variable in the session of the word verification code
*/
Function valiCode ($ word = 'randcode '){
Header ("Content-type: image/gif ");
$ Border = 0; // whether the border is required; 1: 0: not required
$ How = 4; // Number of digits of the verification code
$ W = $ how * 15; // image width
$ H = 18; // Image height
$ Fontsize = 10; // font size
$ Alpha = "abcdefghijkmnpqrstuvwxyz"; // verification code content 1: letter
$ Number = "23456789"; // verification code content 2: number
$ Randcode = ""; // verification code string initialization
Srand (double) microtime () * 1000000); // initialize the random number seed
$ Im = ImageCreate ($ w, $ h); // Create a verification image
/*
* Draw the basic framework
*/
$ Bgcolor = ImageColorAllocate ($ im, 255,255,255); // you can specify the background color.
ImageFill ($ im, 0, 0, $ bgcolor); // fill the background color
If ($ border)
{
$ Black = ImageColorAllocate ($ im, 0, 0, 0); // you can specify the border color.
ImageRectangle ($ im, 0, 0, $ W-1, $ H-1, $ black); // draw a border
}
/*
* Generate random characters by bit
*/
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); // specify the character
$ Code = substr ($ str, $ which, 1); // Obtain the character
$ J =! $ I? 4: $ j + 15; // specifies the position of the painted character.
$ Color3 = ImageColorAllocate ($ im, mt_rand (0,100), mt_rand (0,100), mt_rand (0,100); // character color
ImageChar ($ im, $ fontsize, $ j, 3, $ code, $ color3); // draw characters
$ Randcode. = $ code; // add a verification code string to a bit by bit
}
/*
* Remove comments if you need to add interference.
*
* The following for () loop is the background interference line code.
*/
/* + ------------------------------- Start of the background interference line ---------------------------------------------- + */
For ($ I = 0; $ I <5; $ I ++) // draws the background interference line
{
$ 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
}
/* + ------------------------------- End of the painted background interference line ------------------------------------ + */
/*
* Remove comments if you need to add interference.
*
* The following for () loop is the background interference point code.
*/
/* + -------------------------------- Start of the painted background interference point ------------------------------------------ + */
For ($ I = 0; $ I <$ how * 40; $ I ++) // draws 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
}
/* + -------------------------------- The background interference point is painted. ---------------------------------------- + */
// Write the verification code string to the session to check whether the verification code is correct when the logon information is submitted. For example, $ _ POST ['randcode'] = $ _ SESSION ['randcode']
$ _ SESSION [$ word] = $ randcode;
/* Drawing ends */
Imagegif ($ im );
ImageDestroy ($ im );
/* Drawing ends */
} |