用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