批改状态:未批改
老师批语:
使用 SESSION 记录用户登录状态,总共使用四个页面进行,登录页 login.html 、判断页 check.php、用户页 user.php
以及退出页 logout.php
要保存用户会话首页要在最开始添加,session_start(); 且前面不能有其它相关代码,另清除会话需要注意一点,即这串代码
setcookie('PHPSESSID','',time()-3600); 必须清除,否则还会产生PHPSESSID
界面示例:

相关代码如下:
HTML 部分:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>用户登录</title>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="js/login.js"></script>
<style type="text/css">
.login{
width: 300px;
border: 1px solid #3a6c7e;
border-radius: 20px;
margin: auto;
}
.login h2{
text-align: center;
}
.login p{
margin-left: 10px;
}
.login span{
margin-left: 15px;
}
</style>
</head>
<body>
<div class="login">
<h2>用户登录</h2>
<p>
<label for="user">账号:</label>
<input type="text" name="user" id="user">
</p>
<p>
<label for="pass">密码:</label>
<input type="password" name="pass" id="pass">
</p>
<p>
<label for="record">记住密码</label>
<input type="checkbox" name="record" id="record" checked>
</p>
<p>
<button>登录</button>
<!--<span style="color: #AA1111;">密码错误!</span>-->
</p>
</div>
</body>
</html>JS 部分:
$(document).ready(function () {
//给按钮添加点击事件
$('button:first').click(function () {
//得到user pass 关判断是否为空
if($('#user').val().length==0){
$('button:first').parent($('span').remove())
$('button:first').after('<span style="color: #AA1111;">请先输入用户!</span>')
$('#user').focus()
}else if($('#pass').val().length==0){
$('button:first').parent($('span').remove())
$('button:first').after('<span style="color: #AA1111;">请先输入密码!</span>')
$('#pass').focus()
}else {
$('button:first').parent($('span').remove())
var record=0
if($('input[type=checkbox]').prop('checked')){
record=1
}
//使用 Ajax 进行验证
$.ajax({
url:'inc/check.php?m=login',
type:'POST',
dataType:'JSON',
data:{
'user':$('#user').val(),
'pass':$('#pass').val(),
'record':record
},
success:function (msg,status,xhr) {
if(msg['status']==0){
// console.log('success')
$('button:first').parent($('span').remove())
$('button:first').after('<span style="color:#008800">登录成功!正在跳转中...</span>')
setTimeout(function () {
$(window).attr('location','user.php')
},2000)
}else if(msg['status']==1){
$('button:first').parent($('span').remove())
$('button:first').after('<span style="color:#ff0000;">登录密码错误!</span>')
setTimeout(function () {
$('button:first').parent($('span').remove())
},2000)
}
}
})
}
})
})check.php 部分:
<?php
/医院
* Created by PhpStorm.
* User: Administrator
* Date: 2018/4/23
* Time: 12:52
*/
//开启会话
session_start();
//判断是否存在会话,不存在则进行判断请求
if(!isset($_SESSION['user_id'])) {
//判断是否登录
if ($_GET['m'] == 'login') {
//连接数据库
$conn = mysqli_connect('localhost', 'root', 'root', 'php') or die('数据库连接失败!');
//选择数据库
//mysqli_select_db('php') or die('数据库不存在或不可用');
//获取用户信息
$user = $_POST['user'];
$pass = $_POST['pass'];
$record = $_POST['record'];
//拼接SQL查询
$query = "SELECT `user_id`,`userName` FROM `user` WHERE `userName`='{$user}' AND `userPass`='{$pass}'";
//执行查询返回结果
$res = mysqli_query($conn, $query);
//判断是否存在记录
//检查查询记录是否为1条
if (mysqli_num_rows($res) == 1) {
//是否记住密码
if ($record == 1) {
//得到查询中的值
$row = mysqli_fetch_array($res);
//设置 session
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['userName'] = $row['userName'];
//设置 cookie 保存时间为1小时
setcookie('user_id', $row['user_id'], time() + 3600);
setcookie('userName', $row['userName'], time() + 3600);
}
//登录成功
echo json_encode([
'status' => '0',
'reg_msg' => 'success'
]);
} else {
//登录失败
echo json_encode([
'status' => '1',
'reg_msg' => 'error'
]);
}
} else {
echo json_encode(['msg' => '非法请求!']);
}
}else{
//如果存在,则直接跳转页面
header('Location:user.php');
}user.php 部分:
<?php
/医院
* Created by PhpStorm.
* User: Administrator
* Date: 2018/4/23
* Time: 16:45
*/
//开启 session
session_start();
//判断是否存在 session 跟 cookie
if(!isset($_SESSION['user_id'])){
//如果存在 cookie 则用 cookie 给 session 赋值
if(isset($_COOKIE['user_id']) && isset($_COOKIE['userName'])){
$_SESSION['user_id']=$_COOKIE['user_id'];
$_SESSION['userName']=$_COOKIE['userName'];
}else{
//跳转页面
header('Location:login.html');
}
}
//查检登录状态
if(isset($_SESSION['userName'])){
echo '当前登录用户:',$_SESSION['userName'];
echo "<a href='logout.php'>退出</a>";
}logout.php 部分:
<?php
/医院
* Created by PhpStorm.
* User: Administrator
* Date: 2018/4/23
* Time: 17:19
*/
session_start();
//查找会话
if(isset($_SESSION['user_id'])){
//删除Cookie
setcookie('user_id','',time()-3600);
setcookie('userName','',time()-3600);
//删除会话
$_SESSION = [];
//应用内置session_destroy()函数调用撤销会话
session_destroy();
setcookie('PHPSESSID','',time()-3600);
}
//location到初始页面
header('Location:login.html');
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号