怎么将以下验证码改成可以给验证码文字定义字体的验证码?

拉拉啊 发布于 2013/08/28 12:28
阅读 296
收藏 0
PHP
<?php
define('NOROBOT', TRUE);
include_once dirname(dirname(__FILE__)).'/include/inc.php';
$timestamp = time();
$regcode_width = $_GET["w"];
$regcode_height = $_GET["h"];
$x_size=empty($regcode_width) ? 60 : $regcode_width;
$y_size=empty($regcode_height) ? 20 : $regcode_height;

$nmsg = random(4,1);
empty($verify) && $verify = 'regcode';#同页多验证码支持
if(!isset($m_cookie['t_t']) || $m_cookie['t_t'] != $t ) {
    msetcookie($verify, authcode($timestamp."\t".$nmsg, 'ENCODE'));
    msetcookie('t_t', $t);
}
m_clear_ob(1);
if(function_exists('imagecreate') && function_exists('imagecolorallocate') && function_exists('imagepng') &&
function_exists('imagesetpixel') && function_exists('imageString') && function_exists('imagedestroy') && function_exists('imagefilledrectangle') && function_exists('imagerectangle')){
	$aimg = imagecreate($x_size,$y_size);
	//背景颜色
	$back = imagecolorallocate($aimg,255,255,255);
	//边框颜色
	$border = imagecolorallocate($aimg,255,255,255);
	imagefilledrectangle($aimg,0,0,$x_size - 1,$y_size - 1,$back);
	imagerectangle($aimg,0,0,$x_size - 1,$y_size - 1,$border);
  
    for($i=1; $i<=20;$i++){
		//验证码干扰颜色
		$dot = imagecolorallocate($aimg,0, 0, 0);
		imagesetpixel($aimg,mt_rand(2,$x_size-2), mt_rand(2,$y_size-2),$dot);
    }  
	for($i=1; $i<=10;$i++){
		imageString($aimg,1,$i*$x_size/12+mt_rand(1,3),mt_rand(1,13),'.',imageColorAllocate($aimg,0, 0, 0));
	}
	//验证码随机颜色
    for ($i=0;$i<strlen($nmsg);$i++){
		imageString($aimg,mt_rand(4,5),$i*$x_size/4+mt_rand(1,5),mt_rand(1,6),$nmsg[$i],imageColorAllocate($aimg,3, 80, 136));
    }
	header("Pragma:no-cache");
	header("Cache-control:no-cache");
	header("Content-type: image/png");
    imagepng($aimg);
    imagedestroy($aimg);
	exit;
} else{
	header("Pragma:no-cache");
	header("Cache-control:no-cache");
	header("ContentType: Image/BMP");

	$Color[0] = chr(0).chr(0).chr(0);
	$Color[1] = chr(255).chr(255).chr(255);
	$_Num[0]  = "1110000111110111101111011110111101001011110100101111010010111101001011110111101111011110111110000111";
	$_Num[1]  = "1111011111110001111111110111111111011111111101111111110111111111011111111101111111110111111100000111";
	$_Num[2]  = "1110000111110111101111011110111111111011111111011111111011111111011111111011111111011110111100000011";
	$_Num[3]  = "1110000111110111101111011110111111110111111100111111111101111111111011110111101111011110111110000111";
	$_Num[4]  = "1111101111111110111111110011111110101111110110111111011011111100000011111110111111111011111111000011";
	$_Num[5]  = "1100000011110111111111011111111101000111110011101111111110111111111011110111101111011110111110000111";
	$_Num[6]  = "1111000111111011101111011111111101111111110100011111001110111101111011110111101111011110111110000111";
	$_Num[7]  = "1100000011110111011111011101111111101111111110111111110111111111011111111101111111110111111111011111";
	$_Num[8]  = "1110000111110111101111011110111101111011111000011111101101111101111011110111101111011110111110000111";
	$_Num[9]  = "1110001111110111011111011110111101111011110111001111100010111111111011111111101111011101111110001111";

	echo chr(66).chr(77).chr(230).chr(4).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(54).chr(0).chr(0).chr(0).chr(40).chr(0).chr(0).chr(0).chr(40).chr(0).chr(0).chr(0).chr(10).chr(0).chr(0).chr(0).chr(1).chr(0);
	echo chr(24).chr(0).chr(0).chr(0).chr(0).chr(0).chr(176).chr(4).chr(0).chr(0).chr(18).chr(11).chr(0).chr(0).chr(18).chr(11).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0);

	for ($i=9;$i>=0;$i--){
		for ($j=0;$j<=3;$j++){
			for ($k=1;$k<=10;$k++){
				if(mt_rand(0,7)<1){
					echo $Color[mt_rand(0,1)];
				}else{
					echo $Color[substr($_Num[$nmsg[$j]], $i * 10 + $k, 1)];
				}
			}
		}
	}
	exit;
}

?>
加载中
返回顶部
顶部