Heim  >  Artikel  >  php教程  >  GD库制作验证码

GD库制作验证码

PHP中文网
PHP中文网Original
2016-05-22 18:27:06957Durchsuche

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;
}
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn