PHP生成图形验证码

PHP生成图形验证码

效果:随机生成6位验证码,100个干扰的黑点,一条干扰线

代码:image.php(生成验证码)和check.php(验证验证码是否输入正确)

效果图详见代码下面的截图

image.php

<?php
	session_start();										//启动session
	header('Content-type: image/gif');						//输出头信息
	$image_w=100;											//验证码图形的宽				
	$image_h=25;											//验证码图形的高
	$number=range(0,9);										//定义一个成员为数字的数组
	$character=range("Z","A");								//定义一个成员为大写字母的数组
	$result=array_merge($number,$character);				//合并两个数组
	$string="";												//初始化
	$len=count($result);									//新数组的长
	for($i=0;$i<6;$i++)
	{
		$new_number[$i]=$result[rand(0,$len-1)];			//在$result数组中随机取出6个字符
		$string=$string.$new_number[$i];					//生成验证码字符串
	}
	$_SESSION['string']=$string;							//使用$_SESSION变量传值
	$check_image=imagecreatetruecolor($image_w,$image_h);	//创建图片对象
	$white=imagecolorallocate($check_image, 255, 255, 255);	
	$black=imagecolorallocate($check_image, 0, 0, 0);	
	imagefill($check_image,0,0,$white);//设置背景颜色为白色
	$line_color=imagecolorallocate($check_image, 255, 0, 0);//设直线的颜色
	imageline($check_image, 0, 10, 100,20, $line_color);//画线
	for($i=0;$i<100;$i++)									//加入100个干扰的黑点
	{
		imagesetpixel($check_image, rand(0,$image_w), rand(0,$image_h),$black);
	}
	for($i=0;$i<count($new_number);$i++)					//在背景图片中循环输出4位验证码
	{
		$x=mt_rand(1,7)+$image_w*$i/6;						//设定字符所在位置X坐标
		$y=mt_rand(1,$image_h/6);							//设定字符所在位置Y坐标
		//随机设定字符颜色
		$color=imagecolorallocate($check_image,mt_rand(0,200),mt_rand(0,200),mt_rand(0,200));
		//输入字符到图片中
		imagestring($check_image,5,$x,$y,$new_number[$i],$color);
	}
	imagepng($check_image);
	imagedestroy($check_image);
?>

 check.php

<!DOCTYPE html>
<html>
<head>
	<title>留言页面</title>
</head>
<body>
<form method="post" action="">
	验证码:<input type="text" size="10" name="check">
	<img src="image.php">
	<input type="submit" name="ok" value="提交">
</form>
</body>
</html>
<?php
	session_start();							//启动session
	if(isset($_POST['ok']))
	{
		$checkstr=$_SESSION['string'];			//使用$_SESSION变量获取image.php页面上的验证码
		$str=$_POST['check'];					//用户输入的字符串
		if(strcasecmp($str,$checkstr)==0)		//不区分大小写进行比较
			echo "<script>alert('验证码输入正确!');</script>";
		else
			echo "<script>alert('输入错误!');</script>";
	}
?>

效果图

生成验证码

正确输入验证码之后

错误输入验证码

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单点了

谢谢大佬

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值