PHP 会话

会话(session)是一种(在变量中)存储信息以供跨多个页面使用的方法。

与 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 "会话变量已设置。";
?>

</body>
</html>

运行实例

注意:session_start() 函数必须是您文档中的第一个内容。在任何 HTML 标签之前。

获取 PHP 会话变量值

接下来,我们创建另一个名为 "demo_session2.php" 的页面。从该页面,我们将访问在第一页("demo_session1.php")上设置的会话信息。

请注意,会话变量不是单独传递给每个新页面的,而是从我们在每个页面开始时打开的会话(session_start())中检索的。

另请注意,所有会话变量值都存储在全局 $_SESSION 变量中:

实例

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

<?php
// 输出上一页设置的会话变量
echo "喜欢的颜色是 " . $_SESSION["favcolor"] . ".<br>";
echo "喜欢的动物是 " . $_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>

运行实例