管理员登录后台模块
实现管理员登录后台模块,主要包括:
1. 数据表的设计
2. 登录流程设计
3. 登录代码
4. 登录检查代码
1. 管理员数据表——007_admin
字段名 | 解释 |
---|---|
id | 记录id,自动生成的 |
username | 用户名 |
password | 密码 |
name | 管理员姓名 |
tel | 电话 |
lastloginip | 最后登录IP |
lastlogintime | 最后登录时间 |
loginhits | 登录总次数 |
status | 账号状态,1启用,0停用 |
addate | 账号创建日期 |
2.登录流程图
3.登录实现
登录页面 login.php
<!--login.php-->
<!DOCTYPE html>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>用户登录</title>
</head>
<body>
<form name="form1" method="post" action="login_check.php">
<table width="500" border="1" bordercolor="#ccc" rules="all" align="center" cellpadding="5">
<tr>
<th colspan="2" bgcolor="#ccc">用户登录</th>
</tr>
<tr>
<td width="80" align="right">用户名:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td align="right">密码:</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" value="登录"/>
<input type="hidden" name="ac" value="login"/> <!--隐藏域,向服务器隐式传值,用于表单验证-->
</td>
</tr>
</table>
</form>
</body>
</html>
运行效果
输入账号密码后点击登录,会跳转到登录检查页面(login_check.php)
4. 登录检查页面 login_check.php
<!--login_check.php-->
<?php
//********************用户登录检查**********************
//连接MySQL数据库
include "conn.php";
//判断表单是否提交
if(isset($_POST['ac']) && $_POST['ac']=='login'){
//获取表单提交的数据
$username = $_POST['username'];
$password = md5($_POST['password']); //md5() 对密码进行加密
//构建要查询的SQL语句
$sql = "SELECT * FROM 007_admin WHERE username='$username' AND password='$password'";
//执行SQL语句
$result = mysql_query($sql);
//获取结果集中的记录数
$records = mysql_num_rows($result);
//判断是否匹配
if($records){ //匹配
//获取相关变量信息
$lastloginip = $_SERVER['REMOTE_ADDR'];
$lastlogintime = time();
//构建更新记录的SQL语句
$sql = "UPDATE 007_admin SET lastloginip='$lastloginip', lastlogintime=$lastlogintime, loginhits=loginhits+1 WHERER username='$username'";
//执行SQL语句
mysql_query($sql);
//跳转到成功页面
$url = "manage.php";
$message = "用户登录成功!";
header("location:success.php?url=$url&message=$message");
}else{ //未匹配
$message = urlencode("用户名或密码不正确!");
header("location:error.php?message=$message");
}
}else{ //如果非法操作
$message = urlencode("非法操作!");
header("location:error.php?message=$message");
}
?>
代码PS:
md5() 函数
- 描述:计算字符串的 MD5 散列值
- 说明:以 32字符十六进制数字形式返回散列值
- 注意:md5的加密算法不再安全了
- 举例:md5(“123456”) =e10adc3949ba59abbe56e057f20f883e
$_SERVER[]
- 描述:获取服务器执行环境信息。
- $_SERVER[“REMOTE_ADDR”] //客户端的IP地址
- $_SERVER[“SERVER_ADDR”] //服务器端的IP地址
跳转到登录检查页面后,会把管理员输入的账号密码与数据库中的记录进行匹配,当输入的账号密码正确时(即匹配成功),则跳转到登录成功页面(success.php);否则,匹配不成功,跳转到登录失败页面(error.php)。
登录成功页面 success.php
<!--success.php-->
<?php
$message=urldecode($_GET["message"]);
$url=trim($_GET["url"]);
?>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>操作成功</title>
<style type="text/css">
*{margin:0px;padding:0px;}
.box{
width:450px;
border:1px solid #f0f0f0;
background:#FFFFCC;
margin:100px auto;
padding:20px;
font-size:14px;
line-height:180%;
color:#444;
}
h2{margin-bottom:10px;}
#time{color:#FF0000;}
.color2{color:#0099FF;}
a.a1:link,a.a1:visited{color:#0099FF;text-decoration:none;}
a.a1:hover{color:#FF0000;text-decoration:underline;}
</style>
</head>
<body>
<div class="box">
<h2 align="center">操作成功</h2>
<p><b>提示:<?php echo $message;?></b></p>
<p>系统将在 <span id="time">5</span> 秒钟后自动跳转,如果不想等待,请点击 <a class="a1" href="<?php echo $url?>">这里</a> 跳转。</p>
</div>
</body>
</html>
<script language="javascript">
function playSec(num)
{
//获取id=time的元素对象
var time = document.getElementById("time");
time.innerHTML = num;
if(--num >0)
{
window.setTimeout("playSec("+num+")",1000);
}else
{
location.href="<?php echo $url?>";
}
}
playSec(5);
</script>
运行效果
5秒后,跳转到新闻管理页面(manage.php),新闻管理页面在PHP操作MySQL数据库(4)中。
登录失败页面 error.php
登录失败的代码和登录成功的代码差不多。
运行效果
5秒后,跳转到登录页面(login.php),等待管理员重新输入账号密码。