用PHP制作登录和注册页面,一共6个页面,三个可视页面:登录、注册、主页,三个处理页面:验证、添加用户、清除退出
注册
1<!--这是注册页面d&z-2-z.php,用户可以提交用户名和密码进行注册,点击注册按钮提交给d&z-4-add.php页面处理--> 2<!doctype html> 3<html> 4<head> 5<meta charset="utf-8"> 6<title>无标题文档</title> 7</head> 8 9<body> 10 11<h1>注册</h1> 12<form action="d&z-4-add.php" method="post"> <!--from表单指定数据的接收文件为d&z-4-add.php,指定数据传输方式为post--> 13<div><label for="users">用户名</label><input type="text" name="users" id="users"></div><!--用户名栏--> 14<div><label for="pwd">密码</label><input type="password" name="pwd" id="pwd"></div><!--密码栏--> 15<div><label for="pwd2">确认密码</label><input type="password" name="pwdag" id="pwd2"></div><!--再次确认密码栏--> 16<input type="submit" value="注册" id="tj" onClick="return tiJiao()"><!--注册按钮,添加了点击事件,用来验证两次密码是否输入的相同--> 17</form> 18</body> 19<script type="text/javascript"> 20 var pwd = document.getElementById("pwd"); //分别获取密码和确认密码的表单元素 21 var pwd2 = document.getElementById("pwd2"); 22 var bool = false; //设置一个为非的变量 23 24 /* 25 tiJiao()函数用来判断两次密码输入的内容是否相同,相同则返回是,不同则输出提示并返回非 26 */ 27 function tiJiao(){ 28 if(pwd.value==pwd2.value){ 29 bool = true; 30 }else{ 31 alert("两次密码输入不同!"); 32 } 33 return bool; 34 } 35</script> 36</html>
用户添加
1<?php 2 //这里是d&z-4-add.php,是d&z-2-z.php页面提交后跳转到的处理页面,处理结果又两种,添加数据成功则跳转到登录页面d&z-1-d.php,失败则输出提示“注册失败!” 3 require_once("./DBDA.class.php"); //引入数据库连接类 4 $db = new DBDA(); //实例化数据连接 5 $users = $_POST["users"]; //接收传过来的用户名和密码数据 6 $pwd = $_POST["pwd"]; 7 $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","*","#","@","$","%","&");//这是一个自定义的字符串数组 8 $sjs0 = rand(0,41); //设置变量从0到9取10个随机数, 9 $sjs1 = rand(0,41); 10 $sjs2 = rand(0,41); 11 $sjs3 = rand(0,41); 12 $sjs4 = rand(0,41); 13 $sjs5 = rand(0,41); 14 $sjs6 = rand(0,41); 15 $sjs7 = rand(0,41); 16 $sjs8 = rand(0,41); 17 $sjs9 = rand(0,41); 18 //设置秘钥,秘钥是用来提高加密级别的,是由以上自定义字符串数组中随机取出的10个字符组成的字符串, 19 $miyao = "{$arr[$sjs0]}{$arr[$sjs1]}{$arr[$sjs2]}{$arr[$sjs3]}{$arr[$sjs4]}{$arr[$sjs5]}{$arr[$sjs6]}{$arr[$sjs7]}{$arr[$sjs8]}{$arr[$sjs9]}" ; 20 $pwdjm = md5($pwd.$miyao); //将秘钥拼接在传入的密码后面,然后用MD5方法进行加密 21 $sql = "insert into d_z values('{$users}','{$pwdjm}','{$miyao}')"; //sql语句为:将用户名、加密后的MD5码、秘钥存入数据库 22 $result = $db->query($sql,1); //执行sql语句,增语句加上第二参数1,用$result接收结果 23 if($result){ //执行成功,跳转到登录页面d&z-1-d.php 24 echo "<script type='text/javascript'> 25 window.location.href='d&z-1-d.php'; 26 </script>"; 27 }else{ //执行失败,输出提示“注册失败!” 28 echo "注册失败!"; 29 }
登录
1<!--这是登录的主页面d&z-1-d.php,用户可以输入用户名和密码,点击登录时跳转到d&z-5-yan.php做验证处理,还可以点击注册按钮去跳转到注册页面d&z-2-z.php--> 2<!doctype html> 3<html> 4<head> 5<meta charset="utf-8"> 6<title>无标题文档</title> 7</head> 8 9<body> 10<h1>登录</h1> 11<form action="d&z-5-yan.php" method="post"><!--from表单指定数据接收页面为d&z-5-yan.php,数据的传输方式为post--> 12<div><label for="users">用户名</label><input type="text" name="users" id="users"></div><!--用户名栏--> 13<div><label for="pwd">密码</label><input type="password" name="pwd" id="pwd"></div><!--密码栏--> 14<input type="submit" value="登录"><!--登录按钮--> 15<a href="d&z-2-z.php"><input type="button" value="注册"></a><!--注册按钮,添加a标签并指定跳转页面为d&z-2-z.php的注册页面--> 16</form> 17 18</body> 19</html>
验证
1<?php 2 //这里是d&z-5-yan.php,是登录页面d&z-1-d.php点击登录后跳转过来的处理页面 3 session_start(); //开启session 4 require_once("./DBDA.class.php"); //引入数据库访问类 5 $db = new DBDA(); 6 $users = $_POST["users"]; //接收传过来的用户名和密码数据 7 $pwd = $_POST["pwd"]; 8 $sql = "select * from d_z where users='{$users}' "; //创建sql语句查询传入的用户名在数据库中的对应的数据 9 $arr = $db->query($sql); //执行sql语句并用$arr接收 10 if(!empty($arr)){ //判断$arr是否为空 11 $pwdjm = md5("{$pwd}{$arr[0][2]}"); //如果$arr不为空,重组MD5码 12 if($pwdjm==$arr[0][1]){ //如果重组的MD5码和数据库中提取是MD5码相同,则验证成功,跳转到主页d&z-3-index.php,并且把传入的用户名存入$_SESSION["users"]中 13 echo "<script type='text/javascript'> 14 window.location.href='d&z-3-index.php'; 15 </script>"; 16 $_SESSION["users"] = $users; 17 }else{ //如果MD5码不匹配,则提示用户名和密码输入错误 18 echo "用户名和密码错误!"; 19 } 20 }else{ //$arr为空说明没有对应的用户名,提示用户名不存在 21 echo "用户名不存在!"; 22 }
主页
1<!--这是主页页面d&z-3-index.php,是d&z-5-yan.php验证成功后跳转过来的页面,添加了防止绕过登录的方法--> 2<!doctype html> 3<html> 4<head> 5<meta charset="utf-8"> 6<title>无标题文档</title> 7</head> 8<?php 9 10//用来防止绕过登录的方法 11 session_start(); //开启session 12 if(empty($_SESSION["users"])){ //判断$_SESSION["users"]是否为空 13 echo "<script type='text/javascript'> 14 window.location.href='d&z-1-d.php'; 15 </script>"; //空则跳转回登录页面d&z-1-d.php 16 exit; // 停止执行后面的代码 17 } 18 19?> 20<body> 21<h1>欢迎光临</h1> 22<a href="d&z-6-qing.php"><input type="button" value="退出"></a><!--退出登录按钮,点击跳转到处理页面d&z-6-qing.php--> 23</body> 24</html>
退出清除
1<?php 2//这里是d&z-6-qing.php,作用是用来清除$_SESSION["users"]值,即退出登录 3session_start(); //开启session 4unset($_SESSION["users"]); //清除$_SESSION["users"]值 5echo "<script type='text/javascript'> 6 window.location.href='d&z-3-index.php'; 7 </script>"; //跳转到主页d&z-3-index.php,但由于没有了$_SESSION["users"]的值,会触发防止绕过登录方法,直接跳转到登录页面d&z-1-d.php