一、什么是会话
// cookie:再客户端(浏览器)保存用户信息
// 第一次访问一个php脚本文件
// 那么这个php可以通过一个函数来给客户端设置cookie
// 服务器识别用户,是通过用户使用的终端/浏览器来识别
// 开启一个会话
// session_start();
/**
* 执行两个动作
* 1、浏览器:PHPSESSID,基于cookie
* 2、服务器:创建一个与PHPSESSID同名的会话文件
*/
// $_SESSION['email'] = 'admin@php.cn';
// $_SESSION['password'] = md5(md5('123456').'php.cn888');
// $_SESSION = [];
// 直接将服务器上的会话文件删除
// session_destroy();
二、会话实例
<!DOCTYPE html>
<html lang="en">
<?php
session_start(); //开启一个会话
// 判断用户是否已经登录
if(isset($_SESSION['user'])){
// unserialize()函数需要处理序列化之后的字符串,然后将其反序列化为php的值
$user = unserialize($_SESSION['user']);
}
?>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>session</title>
</head>
<body>
<nav>
<?php if(isset($user)) : ?>
<a href="" id="logout">退出</a>
<?php else : ?>
<a href="login.php">登录</a>
<?php endif ?>
</nav>
<script>
document.querySelector('#logout').addEventListener('click', function(event) {
if (confirm('是否退出?')) {
// 禁用默认跳转行为
event.preventDefault();
// 跳转到处理器
location.assign('handle.php?action=logout');
}
});
</script>
</body>
</html>
![](https://img.php.cn/upload/image/240/183/435/1657355417800167.png)
<!DOCTYPE html>
<html lang="en">
<?php
session_start();
// 判断用户是否已经登录
if(isset($_SESSION['user'])){
echo '<script>alert("不要重复登录");location.href="index.php"</script>';
}
?>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录</title>
</head>
<body>
<form action="handle.php?action=login" method="post">
<fieldset>
<legend>用户登录</legend>
<p>
<input type="email" name="email" placeholder="user@email.com" require>
</p>
<p>
<input type="password" name="password" placeholder="不少于6位" require>
</p>
<p>
<button>提交</button>
</p>
</fieldset>
<a href="register.php">如果没有账号,请先注册</a>
</form>
</body>
</html>
![](https://img.php.cn/upload/image/325/206/750/1657355503640133.png)
<!DOCTYPE html>
<html lang="en">
<?php
session_start();
// 判断用户是否已经登录
if(isset($_SESSION['user'])){
echo '<script>alert("不要重复登录");location.href="index.php"</script>';
}
?>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=], initial-scale=1.0">
<title>注册</title>
</head>
<body>
<form action="handle.php?action=register" method="post">
<fieldset>
<legend>用户注册</legend>
<p>
<input type="text" name="name" placeholder="请输入" require>
</p>
<p>
<input type="email" name="email" placeholder="user@email.com" require>
</p>
<p>
<input type="password" name="password" placeholder="不少于6位" require>
</p>
<p>
<button>提交</button>
</p>
</fieldset>
</form>
</body>
</html>
![](https://img.php.cn/upload/image/492/374/183/1657355661198429.png)