PHP制作登录注册页面

Wesley13
• 阅读 574

用PHP制作登录和注册页面,一共6个页面,三个可视页面:登录、注册、主页,三个处理页面:验证、添加用户、清除退出

注册

<!--这是注册页面d&z-2-z.php,用户可以提交用户名和密码进行注册,点击注册按钮提交给d&z-4-add.php页面处理-->
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>

<h1>注册</h1>
<form action="d&z-4-add.php" method="post">    <!--from表单指定数据的接收文件为d&z-4-add.php,指定数据传输方式为post-->
<div><label for="users">用户名</label><input type="text" name="users" id="users"></div><!--用户名栏-->
<div><label for="pwd">密码</label><input type="password" name="pwd" id="pwd"></div><!--密码栏-->
<div><label for="pwd2">确认密码</label><input type="password" name="pwdag" id="pwd2"></div><!--再次确认密码栏-->
<input type="submit" value="注册" id="tj" onClick="return tiJiao()"><!--注册按钮,添加了点击事件,用来验证两次密码是否输入的相同-->
</form>
</body>
<script type="text/javascript">
    var pwd = document.getElementById("pwd");    //分别获取密码和确认密码的表单元素
    var pwd2 = document.getElementById("pwd2");
    var bool = false;    //设置一个为非的变量
    
    /*
        tiJiao()函数用来判断两次密码输入的内容是否相同,相同则返回是,不同则输出提示并返回非
    */
    function tiJiao(){    
        if(pwd.value==pwd2.value){
            bool = true;    
        }else{
            alert("两次密码输入不同!");    
        }    
        return bool;
    }
</script>
</html>

用户添加

<?php 
    //这里是d&z-4-add.php,是d&z-2-z.php页面提交后跳转到的处理页面,处理结果又两种,添加数据成功则跳转到登录页面d&z-1-d.php,失败则输出提示“注册失败!”
    require_once("./DBDA.class.php");    //引入数据库连接类
    $db = new DBDA();    //实例化数据连接
    $users = $_POST["users"];    //接收传过来的用户名和密码数据
    $pwd = $_POST["pwd"];
    $arr = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","i","s","t","u","v","w","x","y","z","1","2","3","4","5","6","7","8","9","0","*","#","@","$","%","&");//这是一个自定义的字符串数组
    $sjs0 = rand(0,41);    //设置变量从0到9取10个随机数,
    $sjs1 = rand(0,41);
    $sjs2 = rand(0,41);
    $sjs3 = rand(0,41);
    $sjs4 = rand(0,41);
    $sjs5 = rand(0,41);
    $sjs6 = rand(0,41);
    $sjs7 = rand(0,41);
    $sjs8 = rand(0,41);
    $sjs9 = rand(0,41);
    //设置秘钥,秘钥是用来提高加密级别的,是由以上自定义字符串数组中随机取出的10个字符组成的字符串,
    $miyao = "{$arr[$sjs0]}{$arr[$sjs1]}{$arr[$sjs2]}{$arr[$sjs3]}{$arr[$sjs4]}{$arr[$sjs5]}{$arr[$sjs6]}{$arr[$sjs7]}{$arr[$sjs8]}{$arr[$sjs9]}" ;
    $pwdjm = md5($pwd.$miyao);    //将秘钥拼接在传入的密码后面,然后用MD5方法进行加密
    $sql = "insert into d_z values('{$users}','{$pwdjm}','{$miyao}')";    //sql语句为:将用户名、加密后的MD5码、秘钥存入数据库
    $result = $db->query($sql,1);    //执行sql语句,增语句加上第二参数1,用$result接收结果
    if($result){                    //执行成功,跳转到登录页面d&z-1-d.php
        echo "<script type='text/javascript'>
            window.location.href='d&z-1-d.php';
        </script>";    
    }else{                            //执行失败,输出提示“注册失败!”
        echo "注册失败!";    
    }

登录

<!--这是登录的主页面d&z-1-d.php,用户可以输入用户名和密码,点击登录时跳转到d&z-5-yan.php做验证处理,还可以点击注册按钮去跳转到注册页面d&z-2-z.php-->
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<h1>登录</h1>
<form action="d&z-5-yan.php" method="post"><!--from表单指定数据接收页面为d&z-5-yan.php,数据的传输方式为post-->
<div><label for="users">用户名</label><input type="text" name="users" id="users"></div><!--用户名栏-->
<div><label for="pwd">密码</label><input type="password" name="pwd" id="pwd"></div><!--密码栏-->
<input type="submit" value="登录"><!--登录按钮-->
<a href="d&z-2-z.php"><input type="button" value="注册"></a><!--注册按钮,添加a标签并指定跳转页面为d&z-2-z.php的注册页面-->
</form>

</body>
</html>

验证

<?php
    //这里是d&z-5-yan.php,是登录页面d&z-1-d.php点击登录后跳转过来的处理页面
    session_start();     //开启session
    require_once("./DBDA.class.php");    //引入数据库访问类
    $db = new DBDA();
    $users = $_POST["users"];    //接收传过来的用户名和密码数据
    $pwd = $_POST["pwd"];
    $sql = "select * from d_z where users='{$users}' ";    //创建sql语句查询传入的用户名在数据库中的对应的数据
    $arr = $db->query($sql);    //执行sql语句并用$arr接收
    if(!empty($arr)){    //判断$arr是否为空
        $pwdjm = md5("{$pwd}{$arr[0][2]}");    //如果$arr不为空,重组MD5码
        if($pwdjm==$arr[0][1]){        //如果重组的MD5码和数据库中提取是MD5码相同,则验证成功,跳转到主页d&z-3-index.php,并且把传入的用户名存入$_SESSION["users"]中
            echo "<script type='text/javascript'>
                window.location.href='d&z-3-index.php';
            </script>";    
            $_SESSION["users"] = $users; 
        }else{        //如果MD5码不匹配,则提示用户名和密码输入错误
            echo "用户名和密码错误!";    
        }
    }else{            //$arr为空说明没有对应的用户名,提示用户名不存在
        echo "用户名不存在!";    
    }    

主页

<!--这是主页页面d&z-3-index.php,是d&z-5-yan.php验证成功后跳转过来的页面,添加了防止绕过登录的方法-->
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<?php

//用来防止绕过登录的方法
    session_start();    //开启session
    if(empty($_SESSION["users"])){    //判断$_SESSION["users"]是否为空
        echo "<script type='text/javascript'>
            window.location.href='d&z-1-d.php';
        </script>";        //空则跳转回登录页面d&z-1-d.php
        exit;    //    停止执行后面的代码
    }

?>
<body>
<h1>欢迎光临</h1>    
<a href="d&z-6-qing.php"><input type="button" value="退出"></a><!--退出登录按钮,点击跳转到处理页面d&z-6-qing.php-->
</body>
</html>

退出清除

<?php
//这里是d&z-6-qing.php,作用是用来清除$_SESSION["users"]值,即退出登录
session_start();     //开启session
unset($_SESSION["users"]);    //清除$_SESSION["users"]值
echo "<script type='text/javascript'>
            window.location.href='d&z-3-index.php';
        </script>";        //跳转到主页d&z-3-index.php,但由于没有了$_SESSION["users"]的值,会触发防止绕过登录方法,直接跳转到登录页面d&z-1-d.php
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。$200美元A
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。$200美元A
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。$200美元A
国庆假期玩不停,双重好礼放肆领
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。,仅限7天AW
国庆假期玩不停双重好礼放肆领
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。,仅限7天AW
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。,仅限7天$20
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。,仅限7天$20
国庆假期玩不停双重好礼放肆领
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。AWS国庆T恤
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠。国庆双重礼,仅限7天$200美元AWS服务抵