/** * 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 */ } |