Heim > php教程 > php手册 > PHP实例:用PHP实现表单验证码登陆校验

PHP实例:用PHP实现表单验证码登陆校验

WBOY
Freigeben: 2016-06-21 09:01:20
Original
1180 Leute haben es durchsucht

原理:生成一个图片,并且保存图片中显示的字符到SESSION.在登陆时判断输入的校验码是否和SESSION中校验码相同.

这是生成校验码和图片的文件checkNumber.php

session_start();
if($act  ==  "init")
{
        Header("Content-type:  image/png");
        srand(microtime()  *  100000);
        $login_check_number  =  strval(rand("1111","9999"));
        session_register("login_check_number");
        //这里是使用了SESSION来保存校验码.
        //当然也可以用COOKIE
        //setcookie("login_check_number",$login_check_number);
        //然后将第一行的session_start()删除;
        //不推荐使用COOKIE,因为使用COOKIE并不能进行安全的验证.
        $h_img  =  imagecreate(40,17);
        $c_black  =  ImageColorAllocate($h_img,  0,0,0);
        $c_white  =  ImageColorAllocate($h_img,  255,255,255);
        imageline($h_img,  1,  1,  350,  25,  $c_black);
        imagearc($h_img,  200,  15,  20,  20,  35,  190,  $c_white);
        imagestring($h_img,  5,  2,  1,  $login_check_number,  $c_white);
        ImagePng($h_img);
        ImageDestroy($h_img);
        die();
}
/*
使用方法:
在HTML文件中加入PHP实例:用PHP实现表单验证码登陆校验在登陆校验PHP页面中加入以下代码(注意:在加入代码前不能有输出,因为使用了SESSION) 
//$number  是你输入的校验码的值  
include_once("./checkNumber.php");  
//检验校验码  
if($number  !=  $login_check_number  ||  empty($number))
{
        print("校验码不正确!");
        die();
}
*/
?>

使用SESSION的问题:

如果打开登陆页在SESSION的失效后才进行登陆,那么登陆会失败.

使用COOKIE的问题:

COOKIE是保存在客户端的,所以如果使用COOKIE的话还不如不用.

针对VBB论坛.保存checkNumber.php后.修改MYSQL数据库template数据表的title  为  logincode  forumhome_logincode  username_loggedout的template  内容.

然后在member.php的

if  ($action=="login")

后加入

       //检验校验码
        include_once("./checkNumber.php");
        if($number  !=  $login_check_number  ||  $number  ==  "")
        {
                print("校验码不正确!");
                die();
        }



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage