PHP 会话 (Sessions)


2021年12月18日, Learn eTutorial
1854

在本 PHP 教程中,您将学习有关 PHP 中会话的所有知识。我们还将讨论如何启动会话、创建会话、检查会话、访问会话和销毁会话。

什么是 PHP 中的会话 (Sessions)?

通常,会话是两个媒介之间的通信框架。PHP 会话用于将数据保存在服务器上,而不是用户的计算机上。会话标识符(SID)是用于在基于会话的系统中识别每个用户的数字。SID 用于将用户与其在服务器上的信息(如帖子、电子邮件等)关联起来。

PHP : Html Form
虽然可以使用 Cookie 来存储数据,但存在一些安全问题。因为 Cookie 保存在用户的计算机上,攻击者可以轻松操纵 Cookie 内容,将潜在的恶意数据引入您的应用程序,可能会破坏它。此外,每次浏览器向服务器请求 URL 时,网站的所有 Cookie 数据都会作为请求的一部分自动发送到服务器。这意味着,如果您在用户设备上保留了 5 个 Cookie,每个大小为 4KB,那么每次用户访问页面时,浏览器都必须上传 20KB 的数据,这可能会影响您网站的速度。使用 PHP 会话,我们可以克服这两个问题。

如何在 PHP 中启动会话?

在将会话变量中存储任何数据之前,我们必须首先启动会话。只需执行 PHP 的 session_start() 方法即可启动一个新会话。它将启动一个新会话并为用户分配一个唯一的会话 ID。
示例


session_start()

与 Cookie 类似,我们必须在脚本的开头使用 session_start() 函数来启动会话。

如何在 PHP 中存储会话数据?

使用 $_SESSION[] 超全局数组,我们可以以键值对的形式存储会话数据。在会话的生命周期内,可以访问存储的数据。
示例


session_start();
$_SESSION['user'] = "Roy";

如何在 PHP 中访问会话?

要访问会话值,我们使用 PHP 的 $_SESSION[] 超全局变量。它通常是一个关联数组,包含当前请求中由浏览器提供的所有会话值的列表,以会话名称为键。可以使用常规的数组语法来获取单个会话值。

 

示例:“session.php” 包含会话的页面


<?php
session_start();
$_SESSION['user'] = "Roy";
?>

“session_demo.php” 访问会话值的页面


<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>
    <h1>Hi! <?php echo $_SESSION['user'] ?> Welcome to learnetutorials.com</h1>
</body>
</html>


PHP - session

正如我们在上面的示例中看到的,所有访问会话值的页面都应声明函数 session_start()。并且所有这些页面都应属于同一个域。

如何在 PHP 中销毁会话?

如果我们只想销毁一个特定的会话,我们可以使用 unset() 函数,并将该会话的键作为参数。
示例


session_start();
if (isset($_SESSION['user'])) {
    unset($_SESSION['user']);
}

如果我们想销毁整个会话,我们可以使用函数 session_destroy()。session_destroy() 函数不需要任何参数。在使用 session_destroy() 之后,我们将无法访问任何会话。
示例


session_start();
session_destroy();