版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nanajinshengyonggan/article/details/79677612
验证码
就是有字母或文字的图片,并且要有一定的干扰,还要能够在看不清的情况下进行刷新。流程如下:
1.造画布,不填充,默认的画布是黑色的
2.造颜料准备写字
3.写字
imagestring——水平的画一行字符串
说明: bool inagestring(resource
font, int
y,string
col)
参数分别代表:画布资源,字体大小(1~5中选择),字符最左上角的X坐标,Y坐标,要写的字符串,颜色
/*
1.造画布
*/
$im = imagecreatetruecolor(50,25);
//不填充,默认的画布是什么颜色的呢
//答:黑色
//2.造颜料准备写字
$red = imagecolorallocate($im,255,0,0);
//3.写字
//imagestring------水平的画一行字符串
//说明
//bool inagestring(resource $image,int $font, int $x,int $y,string $s,int $col)
//参数分别代表:画布资源,字体大小(1~5中选择),字符最左上角的X坐标,Y坐标,要写的字符串,颜色
//
//
$str = substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz23456789'),0,4);
imagestring($im,5,0,0,$str,$red);
header('content-type: image/png');
imagepng($im);//直接输出
运行结果如下:
进一步改进后:验证码可以随机改变颜色,也会有干扰线生成
//1.造画布
$im = imagecreatetruecolor(50,25);
//2.造颜料准备写字
//$red = imagecolorallocate($im,255,0,0);
//填充浅色背景
$gray = imagecolorallocate($im,220,220,220);
//随机颜色
$randcolor = imagecolorallocate($im,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
$linecolor1 = imagecolorallocate($im,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
$linecolor2 = imagecolorallocate($im,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
$linecolor3 = imagecolorallocate($im,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
//填充背景
imagefill($im,0,0,$gray);
//画干扰线
imageline($im,0,mt_rand(0,25),50,mt_rand(0,25),$linecolor1);
imageline($im,0,mt_rand(0,25),50,mt_rand(0,25),$linecolor2);
imageline($im,0,mt_rand(0,25),50,mt_rand(0,25),$linecolor3);
//3.写字
//imagestring------水平的画一行字符串
//说明
//bool inagestring(resource $image,int $font, int $x,int $y,string $s,int $col)
//参数分别代表:画布资源,字体大小(1~5中选择),字符最左上角的X坐标,Y坐标,要写的字符串,颜色
//
//
$str = substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz23456789'),0,4);
imagestring($im,5,0,0,$str,$randcolor);
header('content-type: image/png');
imagepng($im);//直接输出
运行结果如下:
进一步改善,可以随机刷新
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type = "text/javascript">
function chv(){
var vcode = document.getElementsByTagName('img')[0];
vcode.src= "04.php?_s"+Math.random();
}
</script>
</head>
<body>
验证码:<input type = "text" name = 'yanzhengma' />
<img src = '04.php' onclick='chv()'; />
</body>
</html>
运行结果如下: