什么是PHP SESSION会话?
Session(会话) 是服务器端存储用户临时数据的一种机制,用于跟踪用户在网站上的活动状态。与Cookie存储在客户端不同,Session数据完全存储在服务器端,客户端只是通过Cookie保存一个Session ID作为访问凭证。
Session(会话一般有以下几个步骤):

Session数据要么存放在Session文件里,要么存放在数据库。
下面,我们将学习如何实际操作Session会话。
基本思路:准备3个页面,一个index.php,用于验证浏览器cookie,如果没有登录状态,则进行head('login.php')跳转,有则直接加载用户信息。一个login.php,开启会话,验证表单内容,这里默认用户只能是username='admin',password='123456',验证成功,设置Session数组内容。logout.php则是进行清除Session 会话,主要有3种方法,1. 重新赋值array(),2. 通过session_get_cookie_params()获取cookie参数,然后setcookie()直接销毁,3. 通过session_destory()函数直接销毁。
三个页面如下:
index.php:
<?php // index.php - 首页 session_start(); // 检查用户是否已登录 $is_logged_in = isset($_SESSION['user_id']); ?> <!DOCTYPE html> <html> <head> <title>首页</title> </head> <body> <h1>欢迎来到Dotcpp编程-PHP教程</h1> <?php if ($is_logged_in): ?> <h2>你好,<?php echo htmlspecialchars($_SESSION['username']); ?>!</h2> <p>登录时间: <?php echo $_SESSION['login_time']; ?></p> <p>用户ID: <?php echo $_SESSION['user_id']; ?></p> <h3>Session内容:</h3> <pre><?php print_r($_SESSION); ?></pre> <p><a href="logout.php">退出登录</a></p> <?php else: ?> <p>你还没有登录</p> <p><a href="login.php">点击这里登录</a></p> <?php endif; ?> <hr> <h3>调试信息:</h3> <p>Session ID: <?php echo session_id(); ?></p> <p>Cookie中的Session ID: <?php echo $_COOKIE[session_name()] ?? '无'; ?></p> </body> </html>
login.php:
<?php
// login.php - 登录页面
session_start();
// 如果已登录,直接跳转到首页
if (isset($_SESSION['user_id'])) {
header('Location: index.php');
exit;
}
// 处理登录表单
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// 简单验证(实际项目要从数据库验证)
if ($username === 'admin' && $password === '123456') {
// 登录成功,设置Session
$_SESSION['user_id'] = 1;
$_SESSION['username'] = $username;
$_SESSION['login_time'] = date('Y-m-d H:i:s');
// 跳转到首页
header('Location: index.php');
exit;
} else {
$error = "用户名或密码错误";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<h2>用户登录</h2>
<?php if (isset($error)): ?>
<p style="color: red;"><?php echo $error; ?></p>
<?php endif; ?>
<form method="POST" action="">
<p>用户名: <input type="text" name="username" required></p>
<p>密码: <input type="password" name="password" required></p>
<p><input type="submit" value="登录"></p>
</form>
<p><a href="index.php">返回首页</a></p>
</body>
</html>logout.php:
<?php
// logout.php - 退出登录
session_start();
// 方法1:清空Session数据
$_SESSION = array();
// 方法2:删除Session Cookie
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(
session_name(),
'',
time() - 42000,
$params["path"],
$params["domain"],
$params["secure"],
$params["httponly"]
);
}
// 方法3:销毁Session
session_destroy();
// 跳转到首页
header('Location: index.php');
exit;
?>具体操作演示:
1. 来到index.php页面,由于没有进行身份验证,导致Session数组缺乏$_SESSION['user_id'],不能展示完整页面。

2. 进入登录页面:填写(admin-123456)完成身份认证,自动设置session数组:

3. 登录完成:

4. 退出登录,销毁Session数组,结束会话:

总结:Session对PHP开发人员的重要性是五星级的核心必备技能,它是实现用户状态管理、身份验证、数据持久化的基石,直接决定了Web应用的安全性和用户体验,不会使用Session就等于不会做需要登录功能的网站。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程