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>