必备条件:
php增加了gd库这个扩展。(gd库为php提供了一系列操作图片的方法)。
简要概括:
把用随机函数产生的数字作为验证码的值,把验证码放在服务器端的session中,通过与客户端输入值的比较来判断验证码是否正确。
首先,创建验证码:
<?php
//要把值赋给session首先要启动该服务组件
session_start();
//产生随机数字并赋给$nums,期中rand()函数是用来产生0到15的随机数,dechex()的作用是把rand()表示为16进制,这样就能出现a-f中的部分字母
for($i=0;$i<4;$i++){
$nums.=dechex(rand(0,15));
}
//把值赋给创建并把值赋给session
$_SESSION[image]=$nums;
//设置图片的大小尺寸
$img=imagecreatetruecolor(100,30);
//set color,设置背景色
$bg=imagecolorallocate($img,0,0,0);
//font color,设置前景色,既是字体的颜色
$fg=imagecolorallocate($img,255,255,255);
//font loacation,字体相对于图片的位置,以及字体的设置
imagestring($img,rand(1,6),rand(5,60),rand(3, 15),$nums,$fg);
//print the image,输出图片,交给用户端使用
header("Content-type:image/jpeg");
imagejpeg($img);
?>
通过上面的步骤产生了验证码的图片,可是怎么使用呢。
客户端的界面可以简单的是这样的:
<?php
session_start();//同样的是启动session组件
if($_POST[numbers]){//如果表单输入的值不为空
if($_SESSION[image]==$_POST[numbers]){//并且上一个php产生的随机数和客户端输入的值一样,打印出验证码正确
echo "验证码正确.";
}
else {
echo "验证码错误.";
}
}
?>
<form action='' method="post">
<img src="make.php" >//引入产生验证码的php文件
<input type="text" name="numbers">
<input type="submit" value="开始验证">
</form>