Home  >  Article  >  Backend Development  >  The ultimate solution for php verification code to only display the canvas and not the verification code under Linux_PHP Tutorial

The ultimate solution for php verification code to only display the canvas and not the verification code under Linux_PHP Tutorial

WBOY
WBOYOriginal
2016-07-14 10:10:591223browse

After passing the test, I will release my code first


[php] session_start();
/**Remove boom and it’s utf-8
* vCode(m,n,x,y) m numbers, display size is n, side width x, side height y
* http://blog.qita.in
* Rewrite the record session $code
*/

vCode(4, 12); //4 numbers, display size is 15

function vCode($num = 4, $size = 20, $width = 0, $height = 0) {
!$width && $width = $num * $size * 4 / 5 + 5;
!$height && $height = $size + 10;
// Removed 0 1 O l etc.
$str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
$code = '';
for ($i = 0; $i < $num; $i++) {
$code .= $str[mt_rand(0, strlen($str)-1)];
}
// Draw image
$im = imagecreatetruecolor($width, $height);
// Define the colors to be used
$back_color = imagecolorallocate($im, 235, 236, 237);
$boer_color = imagecolorallocate($im, 118, 151, 199);
$text_color = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));
// Draw background
imagefilledrectangle($im, 0, 0, $width, $height, $back_color);
// Draw border
imagerectangle($im, 0, 0, $width-1, $height-1, $boer_color);
// Draw interference lines
for($i = 0;$i < 5;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360 ), mt_rand(0, 360), $font_color);
}
// Draw interference points
for($i = 0;$i < 50;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);
}
// Draw verification code http://www.ruoshuiyx.com Please keep the source for reprinting. Thank you. It will not affect the execution speed of your code. If not, please inform the webmaster of Ruoshui Impression Network
//@imagefttext($im, $size, 0, 5, $size + 3, $text_color, 'c:\WINDOWS\Fonts\simsun.ttc', $code);
//The one above is for trial use under windows and the bottom one is for trial use under LINUX system. You need to upload the corresponding fonts
@imagefttext($im, $size, 0, 5, $size + 3, $text_color, '../msyh.ttf', $code);
$_SESSION["VerifyCode"]=strtolower($code); //Convert to lowercase
header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
header("Content-type: image/png;charset=utf-8");
imagepng($im);
imagedestroy($im);
}

?>

session_start();
/**Remove boom and it’s utf-8
* vCode(m,n,x,y) m numbers, display size is n, side width x, side height y
* http://blog.qita.in
* Rewrite the record session $code
*/

vCode(4, 12); //4 numbers, display size is 15

function vCode($num = 4, $size = 20, $width = 0, $height = 0) {
!$width && $width = $num * $size * 4 / 5 + 5;
!$height && $height = $size + 10;
// Removed 0 1 O l etc
$str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
$code = '';
for ($i = 0; $i < $num; $i++) {
$code .= $str[mt_rand(0, strlen($str)-1)];
}
// Draw image
$im = imagecreatetruecolor($width, $height);
// Define the colors to be used
$back_color = imagecolorallocate($im, 235, 236, 237);
$boer_color = imagecolorallocate($im, 118, 151, 199);
$text_color = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120));
// Draw background
imagefilledrectangle($im, 0, 0, $width, $height, $back_color);
// Draw border
imagerectangle($im, 0, 0, $width-1, $height-1, $boer_color);
// Draw interference lines
for($i = 0;$i < 5;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360 ), mt_rand(0, 360), $font_color);
}
// Draw interference points
for($i = 0;$i < 50;$i++) {
$font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);
}
// Draw verification code http://www.ruoshuiyx.com Please keep the source for reprinting. Thank you. It will not affect the execution speed of your code. If not, please contact the webmaster of Ruoshui Impression Network
//@imagefttext($im, $size, 0, 5, $size + 3, $text_color, 'c:\WINDOWS\Fonts\simsun.ttc', $code);
//The one above is for trial use under windows and the bottom one is for trial use under LINUX system. You need to upload the corresponding fonts
@imagefttext($im, $size , 0, 5, $size + 3, $text_color, '../msyh.ttf', $code);
$_SESSION["VerifyCode"]=strtolower($code); //Convert to lowercase
header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
header("Content-type: image/png;charset=utf-8");
imagepng($im);
imagedestroy($im);
}

?>

After copying and downloading, pay attention to lines 41 and 43. If the server is windows, please comment out line 43 and keep line 41. For Linux, do the opposite

Under Linux, please note that the corresponding fonts must be placed in the upper-level directory. For example, I use Microsoft Yahei. I wouldn’t have tried any other method, but it finally showed up anyway. Try it now

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/477403.htmlTechArticleAfter passing the test, first release my code [php] ?php session_start(); /** Just remove the boom. utf-8 * vCode(m,n,x,y) m numbers display size is n side width x side height y * http://blog.qita.in *...
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