PHP 会话
会话是一种在多个页面之间存储信息(在变量中)的方式。
与 cookie 不同,信息不会存储在用户的计算机上。
什么是 PHP 会话?
当您使用应用程序时,您会打开它,进行一些更改,然后关闭它。这很像一个会话。计算机知道你是谁。它知道您何时启动应用程序以及何时结束。但在互联网上,有一个问题:Web 服务器不知道您是谁或您做了什么,因为 HTTP 地址不维护状态。
会话变量通过存储用户信息以供跨多个页面使用(例如用户名、最喜欢的颜色等)来解决这个问题。默认情况下,会话变量会持续到用户关闭浏览器为止。
因此,会话变量保存有关单个用户的的信息,并且可用于应用程序中的所有页面。
提示:如果您需要永久存储,您可能需要将数据存储在 数据库 中。
启动 PHP 会话
使用 session_start()
函数启动会话。
会话变量使用 PHP 全局变量 $_SESSION 设置。
现在,让我们创建一个名为“demo_session1.php”的新页面。在此页面中,我们启动一个新的 PHP 会话并设置一些会话变量
示例
<?php
// 启动会话
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// 设置会话变量
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
运行示例 »
注意: session_start()
函数必须是您文档中的第一件事。在任何 HTML 标签之前。
获取 PHP 会话变量值
接下来,我们创建另一个名为“demo_session2.php”的页面。从此页面,我们将访问我们在第一个页面(“demo_session1.php”)上设置的会话信息。
请注意,会话变量不会单独传递到每个新页面,而是从我们在每个页面开头打开的会话(session_start()
)中检索。
还要注意,所有会话变量值都存储在全局 $_SESSION 变量中
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// 回显在上一个页面上设置的会话变量
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
运行示例 »
另一种查看用户会话中所有会话变量值的方法是运行以下代码
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
运行示例 »
它是如何工作的?它如何知道是我?
大多数会话在用户计算机上设置一个用户密钥,类似于这样:765487cf34ert8dede5a562e4f3a7e12。然后,当在另一个页面上打开会话时,它会在计算机上扫描用户密钥。如果匹配,它将访问该会话,否则它将启动一个新的会话。
修改 PHP 会话变量
要更改会话变量,只需覆盖它
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// 要更改会话变量,只需覆盖它
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
运行示例 »
销毁 PHP 会话
要删除所有全局会话变量并销毁会话,请使用 session_unset()
和 session_destroy()
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// 删除所有会话变量
session_unset();
// 销毁会话
session_destroy();
?>
</body>
</html>
运行示例 »