因为项目的需要,要去弄一个登陆时的验证码,毕竟我也是刚毕业才3个月的菜鸟,对验证码的生成过程也不了解。就去网上搜了一下,发现,博文很多,但是对于一穷二白的菜鸟来说,基本都是没有用的。于是自己静下心去看了一上午,终于自己整理出一个适合广大菜鸟的php验证码了。
login.php
//登陆页面
<img src="1.php" onClick="this.src=this.src+'?'+Math.random();"/> 点击图片刷新
<form action="test.php" method="post">
<input type="text" name="yzm" />
<input type="submit" name="submmit" />
</form>
这个页面很简单,就是一个表单。
yzm.php
//验证码的生成和session生成的页面
<?php
session_start();
Header("Content-type: image/PNG");
$im = imagecreate(50,18);
$back = imagecolorallocate($im, 245,245,245);
imagefill($im,0,0,$back);
$yzm = "";
srand((double)microtime()*1000000);
for($i=0;$i<5;$i++){
$font = imagecolorallocate($im, rand(100,255),rand(0,100),rand(100,255));
$number=rand(1,9);
$yzm.=$number;
imagestring($im, 5, 2+$i*10, 1, $number, $font);
}
$_SESSION['yzm'] = $yzm;;
for($i=0;$i<100;$i++)
{
$randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
}
imagepng($im);
imagedestroy($im);
?>
这个页面,生成了一个png格式的图片,同时生成了验证码的session
judge.php
验证页面
<?php
session_start();
$yzm = $_POST['yzm'];
if($yzm!= $_SESSION['yzm']){echo "错了";}else{echo "对的";}
?>
<a href="login.php">back</a>
这样的三个页面配合起来,就可以实现验证码的功能。