PHP中验证码的设计

验证码是网站的重要组成部分,不管是在注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性。很多情况下,我们的一些数据库会被那些垃圾广告软件发送大量的垃圾信息,这个是我们不愿看到的。更有甚者,一些非法用户会通过不断提交信息企图得到数据库的内容,或者造成网站的堵塞。所以,网站的验证码还是非常有必要的。

而随着验证码的使用,很多不法分子“跟进”了它们的技术,所以当前很多门户网站的验证码都做了相应的改进。于是出现了文字长度变长,汉字夹杂数字或者字母的情况.

PHP中的验证码设计

一、一个简单的验证码实例

1.1 显示验证码的图片
index.php
<?php 
	$num=intval(mt_rand(1000,9999));
	for($i=0 ; $i<4 ;$i++)
	{
		echo "<img src=img/yzm/".substr(strval($num),$i,1).".gif/>";
	}
?>
1.2 验证过程
index.php
if (strval($inputyzm)!=strval($num))
{
	echo "<script>alert('验证码错误!');history.go(-1);</script>";
	exit;
} 

二、一个汉字的验证码实例

2.1 显示验证码的图片
index.php
<?php
	$str="汉","字","验","证","码");      //可以定义汉字的内容和个数
	$word=strlen($str));
	for ($i=0;$i<4;$i++)
	{
		$num=rand(0,$word);
		$img = $img."<img src='../images/yzm/".$num".gif'/>";
		$pic = $pic.$str[$num];
	}
>
2.2 将生成的随机字符串赋给一个隐藏域
<input type="hidden" name="yzm" value="<?php echo $pic; ?/>">
2.3 定义一个check()函数
index.php
<script language="javascript">
	function check(form){
		if(form.yzm.value==""){
		alert("请输入验证码");
		form.yzm.focus();
		return false;
	}
	if(form.yzm.vale!=form.yz.value){
		alert("验证码错误");
		form.yzm.focus();
		return false;
	}
}
</script>

评论

评论加载中…