TypeCodes

PHP中验证码的设计

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

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

PHP中的验证码设计

1 一个简单的验证码实例
1.1 显示验证码的图片
1
2
3
4
5
6
7
<?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 验证过程
1
2
3
4
5
if (strval($inputyzm)!=strval($num))
{
    echo "<script>alert('验证码错误!');history.go(-1);</script>";
    exit;
}
2 一个汉字的验证码实例
2.1 显示验证码的图片
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?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()函数
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<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>
打赏支持

Comments »