PHP 会话
会话是一种存储信息(在变量中)以便跨多个页面使用的机制。
与 cookie 不同,信息不会存储在用户计算机上。
什么是 PHP 会话?
当你使用一个应用程序时,你会打开它,做一些更改,然后关闭它。这很像一个会话。计算机知道你是谁。它知道你何时启动应用程序以及何时结束。但在互联网上有一个问题:Web 服务器不知道你是谁或你在做什么,因为 HTTP 地址不维护状态。
会话变量通过存储用户信息来解决这个问题,这些信息可以在多个页面中使用(例如用户名、喜欢的颜色等)。默认情况下,会话变量会一直保留到用户关闭浏览器。
所以;会话变量保存单个用户的信息,并可用于应用程序中的所有页面。
提示:如果你需要永久存储,你可能想将数据存储在 数据库 中。
启动 PHP 会话
会话使用 session_start()
函数启动。
会话变量使用 PHP 全局变量:$_SESSION 设置。
现在,我们创建一个名为“demo_session1.php”的新页面。在此页面中,我们将启动一个新的 PHP 会话并设置一些会话变量。
示例
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_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 session variables that were set on previous page
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
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
运行示例 »
销毁 PHP 会话
要删除所有全局会话变量并销毁会话,请使用 session_unset()
和 session_destroy()
。
示例
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>
运行示例 »