Home  >  Article  >  php教程  >  GD库制作验证码

GD库制作验证码

PHP中文网
PHP中文网Original
2016-05-22 18:27:061011browse

php代码:

<?php 
// 配置验证码
$code_ini = array(
		&#39;code_count&#39;	=> 4,	 // 验证码长度
		&#39;code_size&#39;		=> 20,	 // 验证码字体大小
		&#39;code_width&#39;	=> 100,	 // 验证码框宽度
		&#39;code_height&#39;	=> 30,	 // 验证码框高度
		&#39;code_num&#39;		=> true, // 开启数字
		&#39;code_upper&#39;	=> true, // 开启大写字母
		&#39;code_lower&#39;	=> true, // 开启小写字母 
		&#39;code_remove&#39;	=> &#39;1li0oO2zZ&#39; //排除易混淆字符
	);
// 将配置项转为对应变量
foreach ($code_ini as $key=>$value) {
	$$key = $value;
}
// 创建验证码画布
$code_img = imagecreatetruecolor($code_width, $code_height);
$black = imagecolorallocate($code_img, 0, 0, 0);
// 填充随机背景颜色
$bg = imagecolorallocate($code_img, rand(200, 255), rand(200, 255), rand(200, 255));
imagefill($code_img, 0, 0, $bg);

// 随机画100个干扰点
for ($i = 0; $i < 100; $i++) {
	$color = imagecolorallocate($code_img, rand(0, 200), rand(0, 200), rand(0, 200));
	imagesetpixel($code_img, rand(2, $code_width-2), rand(2, $code_height-2), $color);
}

// 随机画10个干扰线
for ($q = 0; $q < 10; $q++) {
	$color = imagecolorallocate($code_img, rand(0, 200), rand(0, 200), rand(0, 200));
	imageline($code_img, rand(2, $code_width-2), rand(2, $code_height-2), rand(2, $code_width-2), rand(2, $code_height-2), $color);
}


// 获取验证码
$code = get_code($code_count, $code_num, $code_upper, $code_lower, $code_remove);

for ($i=0; $i<$code_count; $i++) {
	$color = imagecolorallocate($code_img, rand(0, 200), rand(0, 200), rand(0,200));
	imagettftext($code_img, $code_size, rand(-30, 30), 5+20*$i, 24, $color, &#39;../fonts/msyh.ttf&#39;,$code[$i]);
}
imagerectangle($code_img, 0, 0, $code_width-1, $code_height-1, $black);
// 输出验证码
header(&#39;content-type:image/gif&#39;);
imagegif($code_img);

// 销毁资源
imagedestroy($code_img);

// 获得验证码
function get_code($code_count, $code_num, $code_upper, $code_lower, $code_remove) {
	$num = array();
	$upper = array();
	$lower = array();
	if ($code_num) {
		$num = range(0, 9);
	}
	if ($code_upper) {
		$upper = range(&#39;A&#39;, &#39;Z&#39;);
	}
	if ($code_lower) {
		$lower = range(&#39;a&#39;, &#39;z&#39;);
	}
	// 合并符合条件数组
	$arr = array_merge($num, $lower, $upper);
	// 排除易混淆字符
	$remove = str_split($code_remove);
	$arr1 = array_diff($arr, $remove);
	$mess = &#39;&#39;;
	for ($i=0; $i<$code_count; $i++) {
		$mess .= $arr1[array_rand($arr1)];
	}
	return $mess;
}
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