实习就是做个留言本,留言需要验证码。
PHP验证码的实现,其实就是首先随机数,然后绘图。
关键的代码为validcode.php中的:
<?php
header("Content-Type:image/png");
//开启session
session_start();
//随机4个数字
$code = "";
$arr = array();
for($i=0;$i<4;$i++){
$arr[$i] = rand(0,9);
$code .= (string)$arr[$i];
}
//设置入session中,方便比对
$_SESSION["validcode"] = $code;
//开始绘图
$width = 100;
$height = 25;
$img = imagecreatetruecolor($width,$height);
//填充背景色
$backcolor = imagecolorallocate($img,0,0,0);
imagefill($img,0,0,$backcolor);
//获取随机较深颜色
for($i=0;$i<4;$i++){
$textcolor = imagecolorallocate($img,rand(50,180),rand(50,180),rand(50,180));
imagechar($img,12,7+$i*25,3,(string)$arr[$i],$textcolor);
}
//显示图片
imagepng($img);
//销毁图片
imagedestroy($img);
?>
然后再用一个页面,放置img标签,引入验证码。再用一个a标签,供用户切换验证码,防止看不清的情况。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>测试页面</title>
<style type="text/css">
a{
font-size:12px;
text-decoration:none;
color:red;
}
a:hover{
color:orange;
}
</style>
</head>
<body>
<img src="validcode.php" style="width:100px;height:25px;" id="code"/>
<a href="javascript:changeCode()">看不清,换一张</a>
</body>
</html>
<script type="text/javascript">
function changeCode(){
document.getElementById("code").src = "validcode.php?id="+Math.random();
}
</script>