PHP 简明教程

PHP 会话 (Sessions)

1. 什么是 PHP 会话 (Session)?

当您操作某个应用程序时,您打开它,做一些更改,然后关闭它。这很像一个会话。计算机知道您是谁,它知道您何时启动应用程序以及何时关闭应用程序。但在互联网上有一个问题:Web 服务器不知道您是谁,也不知道您在做什么,因为 HTTP 地址无法维持状态。

Session 变量解决了这个问题,它通过在服务器上存储用户信息(例如用户名、购物篮中的商品等)供后续使用。默认情况下,Session 变量会一直保存,直到用户关闭浏览器。

因此,Session 变量存储的是有关单一用户的信息,并且对该用户所在应用程序的所有页面均可用。

2. 开启 PHP 会话 - session_start()

在存储任何 Session 变量之前,必须先启动会话。

session_start() 函数用于开启会话。

session_start() 函数必须位于 <html> 标签之前,且作为脚本中的第一行代码。

代码示例:

<?php
// 开启会话
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// 设置 Session 变量
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session 变量已设置。";
?>

</body>
</html>

3. 获取 PHP 会话变量的值

接下来,我们创建一个名为 "demo_session2.php" 的新页面。在这个页面中,我们将访问在第一个页面(demo_session1.php)中设置的 Session 变量。

请注意,Session 变量不是逐个传递到新页面的,相反,它们是从我们在每个页面开头开启的会话中检索的。

代码示例:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// 输出在上一页设置的 Session 变量
echo "喜欢的颜色是 " . $_SESSION["favcolor"] . ".<br>";
echo "喜欢的动物是 " . $_SESSION["favanimal"] . ".";
?>

</body>
</html>

3.1 另一种获取方式

您还可以通过打印 $_SESSION 超全局变量来查看当前会话的所有变量值:

代码示例:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>

</body>
</html>

4. 修改 PHP 会话变量

要修改 Session 变量,只需直接覆盖该变量的值即可:

代码示例:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// 修改 Session 变量
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>

</body>
</html>

5. 销毁 PHP 会话

如果要移除所有的全局 Session 变量并销毁会话,可以使用 session_unset()session_destroy()

代码示例:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// 移除所有 Session 变量
session_unset();

// 销毁会话
session_destroy();

echo "所有 Session 变量已移除,会话已销毁。";
?>

</body>
</html>
session_unset() 用于释放当前内存中所有的会话变量,而 session_destroy() 则会彻底销毁服务器上存储的会话数据。通常建议两者结合使用以确保清理干净。