简单的验证码的实现制作
准备:xampp、wamp等运行环境
支持插件,参考文档:
php开启支持GD插件
<?php phpinfo(); ?>
通过以上的代码可以查看当前的php是否开启gd支持
参考php官方文档: http://php.net/manual/zh/
验证码代码实现
<?php
$image=imagecreatetruecolor(100, 30);
//声明一个背景颜色的值
$bgcolor=imagecolorallocate($image, 255, 255, 255);
//填充到图片里
imagefill($image, 0, 0, $bgcolor);
//定义输出的数字
/*for($i=0;$i<4;$i++){
//字体大小
$fontsize=6;
//字体颜色
$fontcolor=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
//生成的随机数字
$fontcontent=rand(0,9);
//设置在图片的位置
$x=($i*100/4)+rand(5,10);
$y=rand(5,10);
//将数字填充到图片
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}*/
//定义数字字母混合输出
$code='';//声明全局的变量
for($i=0;$i<4;$i++){
//字体大小
$fontsize=6;
//字体颜色
$fontcolor=imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
//生成的随机数字或字母
$data="qwertyuiopLkjhgfdsaZxcvbnm123456789";
$fontcontent=substr($data, rand(0,strlen($data)),1);
$code=$fontcontent;//赋值为全局变量用于保存code,添加到session
//设置在图片的位置
$x=($i*100/4)+rand(5,10);
$y=rand(5,10);
//将数字填充到图片
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
$_REQUEST['authcode']=$code;
//图片添加干扰点
for($i=0;$i<500;$i++){
//干扰点颜色
$pointcolor=imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
imagesetpixel($image, rand(1,99), rand(1,99), $pointcolor);
}
//图片添加干扰线
for($i=0;$i<6;$i++){
//干扰点颜色
$linecolor=imagecolorallocate($image, rand(80,220), rand(80,220), rand(80,220));
imageline($image, rand(0,99), rand(0,22), rand(0,99), rand(1,22), $linecolor);
}
//设置图片的输出格式-这里是必须的设置
header("content-type:image/png");
imagepng($image);
//end 销毁
imagedestroy($image);
?>
以上代码内有详细的注释,这里不再追加说明.
简单的一个模拟应用
<?php
if (isset($_REQUEST['authcode'])) {
session_start();
if (strtolower($_REQUEST['authcode'])==$_REQUEST['authcode']) {
echo "<font color='#0000CC'>输入正确</font>";
}else{
echo "<font color='#0000CC'>输入错误</font>";
}
exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>确认验证码</title>
</head>
<body>
<form method="post" action="./form.php">
<p>验证码:<img id="img_code" src="./captcha.php?r=<?php echo rand(); ?>">
<a href="javascript:void(0)" style="text-decoration:none;" onclick="document.getElementById('img_code').src='./captcha.php?r='+Math.random()">看不清?</a></p>
<p>请输入图片中的验证码:<input type="text" name="authcode"/></p>
<p><input type="submit" value="提交"></p>
</form>
</body>
</html>
这里的$_REQUEST需要注意的是它的用法,可以详见php手册中的说明