php 验证码制作

时间:2021-05-22 13:10:30

直接上代码

1.生成随机数函数

<?php 
function buildRandomString($type=1,$length=4){
if($type==1){
$chars=join("", range(0,9));
}else if($type==2){
$chars=join("",array_merge(range("a","z"),range("A","Z")));
}else if($type==3){
$chars=join("",array_merge(range("a","z"),range("A","Z"),range(0,9)));
}
if($length>strlen($chars)){
exit("字符串长度不够");
}
//随意打乱字符串
$chars=str_shuffle($chars);
return substr($chars, 0,$length);
}

2.传入随机数,生成相应的验证码

<?php
require_once 'string.func.php';
// 通过GD库做验证码
function verifyImage($type = 3, $length = 4, $sess_name = "verify") {
	// 宽
	$width = 80;
	// 长
	$height = 20;
	// 创建画布
	$image = imagecreatetruecolor ( $width, $height );
	// 画布颜色 所属画布
	$white = imagecolorallocate ( $image, 255, 255, 255 );
	// 画笔颜色
	$black = imagecolorallocate ( $image, 0, 0, 0 );
	// 画一个矩形填充画布
	imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );
	$chars = buildRandomString ( $type, $length );
	$_SESSION [$sess_name] = $chars;
	$fontfiles = array (
			"FZLTCXHJW.TTF",
			"MSYH.TTF",
			"MSYHBD.TTF",
			"SIMFANG.TTF",
			"SIMHEI.TTF",
			"SIMKAI.TTF" 
	);
	for($i = 0; $i < $length; $i ++) {
		// mt_rand 产生随机数函数
		$size = mt_rand ( 14, 18 );
		$angle = mt_rand ( - 15, 15 );
		$x = 5 + $i * $size;
		$y = mt_rand ( 18, 22 );
		$color = imagecolorallocate ( $image, mt_rand ( 50, 200 ), mt_rand ( 50, 200 ), mt_rand ( 50, 200 ) );
		$fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];
		$text = substr ( $chars, $i, 1 );
		imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );
	}
	// 小点点做干扰
	for($i = 0; $i < 20; $i ++) {
		$color = imagecolorallocate ( $image, mt_rand ( 50, 200 ), mt_rand ( 50, 200 ), mt_rand ( 50, 200 ) );
		imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );
	}
	// 线线做干扰
	for($i = 0; $i < 3; $i ++) {
		$color = imagecolorallocate ( $image, mt_rand ( 50, 200 ), mt_rand ( 50, 200 ), mt_rand ( 50, 200 ) );
		imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );
	}
	// 告诉浏览器显示什么资源
	header ( "content-type:image/gif" );
	// 显示画布
	imagegif ( $image );
	// 销毁画布资源
	imagedestroy ( $image );
}