用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(); ????//开启sessionunset($_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
PHP制作登录注册页面
原文地址:https://www.cnblogs.com/zxbs12345/p/8440029.html