PHP实现四位数字+字母验证码

一、新建captcha.php,写入以下代码:

<?php
	/*--创建一个大小为 100*30 的验证码--*/
	session_start();

	$image = imagecreatetruecolor(100, 30);
	$bgcolor = imagecolorallocate($image, 255, 255, 255);
	imagefill($image, 0, 0, $bgcolor);

	$captch_code = '';
	for($i=0;$i<4;$i++) {
		$fontsize = 6;
		$fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120),rand(0, 120));

		$data = 'abcdefghijkmnpqrstuvwxy3456789';
		$fontcontent = substr($data, rand(0, strlen($data)-1), 1);
		$captch_code .= $fontcontent;

		$x = ($i*100/4) + rand(5, 10);
		$y = rand(5, 10);

		imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
	}
	$_SESSION['authcode'] = $captch_code;

	//增加点干扰元素
	for($i=0; $i<200;$i++) {
		$pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
		imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);
	}

	//增加线干扰元素
	for($i=0;$i<3;$i++) {
		$linecolor = imagecolorallocate($image, rand(80,220), rand(80,220), rand(80, 220));
		imageline($image, rand(1,99), rand(1,29), rand(1,99), rand(1,29), $linecolor);
	}


	header('content-type:image/png');
	imagepng($image);

	imagedestroy($image);
?>

二、新建form.php,写入以下代码:

<?php
	if(isset($_REQUEST['authcode'])) {
		session_start();

		if(strtolower($_REQUEST['authcode']) == $_SESSION['authcode']) {
			echo "输入正确!";
		} else {
			echo "输入错误!";
		}
		exit();
	}
?>

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="content-type" content="text/html;charset=utf-8" />
		<title>确认验证码</title>
	</head>
	<body>
		<form method="post" action="./form.php">
			 <p>验证码图片:
				<img id="captcha_img" border="1" src="./captcha.php?r=<?php echo rand();?>" width=100 height=30>
				<a href="javascript:void(0)" onClick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?</a>
			</p>
			<p>请输入图片中的内容:<input type="text" name="authcode" value="" /></p>
			<p><input type="submit" value="提交" style="padding:6px 20px;"></p>
		</form>
	</body>
</html>

了解更多,请查看 http://www.imooc.com/learn/115

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值