需要的简单前台页面
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>验证码</title>
</head>
<script type="text/javascript">
function yanz()
{
document.getElementById('code').src='auth.php?tm='+Math.random();
}
</script>
<body>
<h1>请输入验证码</h1>
<form action="check_auth.php" method="post">
<input name="auth" type="text">
<a href="#" onclick="yanz()"><b style="color: #FF0000">看不清,换一张</b></a>
<img src="auth.php" border="0" id="code" /><br/><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
通过前台的传输数据判断是否输入正确
<?php
session_start();
$auth=$_POST['auth'];
if(empty($auth))
{
echo '错误:验证码不能为空';
die;
}
if($auth==$_SESSION['check_auth'])
{
echo '正确';
}
else
{
echo '错误:验证码输入错误';
}
?>
这是一个封装好的一个验证类,也可以自己修改,可以百度PHP画布,原理就是PHP画图组成的
<?php
error_reporting(0);
session_start();
header("Content-type:image/png");
$img_width=100;
$img_height=20;
srand(microtime()*100000);
for($i=0;$i<4;$i++)
{
$new_number.=dechex(rand(0,15));
}
$_SESSION[check_auth]=$new_number;
$new_number=imageCreate($img_width,$img_height);//创建图象
ImageColorAllocate($new_number,255,255,255); //设置背景色为白色
for($i=0;$i<strlen($_SESSION[check_auth]);$i++)
{
$font=mt_rand(3,5);
$x=mt_rand(1,8) + $img_width*$i/4;
$y=mt_rand(1,$img_height/4);
$color=imageColorAllocate($new_number,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));//设置字符颜色
imageString($new_number,$font,$x,$y,$_SESSION[check_auth][$i],$color);//输出字符
}
ImagePng($new_number);
ImageDestroy($new_number);
?>