跳转到内容

PHP 和 MySQL 编程/会话处理

来自维基教科书,开放世界中的开放书籍

HTML 和 PHP 是“无状态”语言。这意味着它们无法在页面之间保留状态。为了解决这个严重的限制,我们使用会话。在会话中,会话变量存储在 web 服务器上的文件中,因此可以在多个页面之间访问。

开始会话

[编辑 | 编辑源代码]

在我们开始使用会话变量之前,我们需要开始一个会话。这需要在每个使用会话变量的页面上完成。需要注意的是,会话必须在任何内容输出之前开始。以下是启动会话的代码

<?php
session_start();
?>

请确保在 "<?php"(php 开始标签)之前没有空格,因为这会导致错误!

值得注意的是,服务器区分同时实现的多个会话的方式是通过会话 ID。当创建一个唯一的会话时,它会被分配一个会话 ID,浏览器会保留该 ID,并用来让 web 服务器知道要使用哪个会话。

写入会话变量

[编辑 | 编辑源代码]

创建一个会话后,变量可以存储在$_SESSION[]数组变量中。以下是一个示例

session_start();
$_SESSION['user_name'] = "Administration";

检索会话变量

[编辑 | 编辑源代码]

创建一个会话并存储变量后,可以从$_SESSION[]数组中检索它们。以下是一个示例

session_start();
if (isset($_SESSION['user_name'])){
   $user_name = $_SESSION['user_name'];
   print $user_name;
}

上面的例子首先开始一个会话,然后检查会话变量 'user_name' 是否已创建(使用isset()函数),如果已经创建,则将它的值赋值给$user_name,并将其打印到屏幕上。

销毁会话

[编辑 | 编辑源代码]

要销毁会话,我们使用session_destroy()函数。这在我们要(例如)注销 web 应用程序的用户时很有用。因此,我们将使用以下代码

session_start();
session_destroy();

注意,我们需要首先开始会话,然后再销毁它。这是因为该session_destroy()函数会销毁当前活动的会话。


华夏公益教科书