W3C中文教程
全球最大最新的中文 Web 技术教程
HTML CSS SQL PHP COLORS MYSQL BOOTSTRAP
 

PHP Session



PHP session 变量用于存储关于用户会话的信息,或者更改用户会话的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

与Cookie不同,该信息不存储在用户计算机上。


什么是 PHP Session?

当您在计算机上操作某个应用程序时,您打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于 HTTP 地址无法保持状态,Web 服务器并不知道您是谁以及您做了什么。

会话变量通过存储要跨多个页面使用的用户信息(例如用户名,喜爱的颜色等)来解决此问题。默认情况下,会话变量被删除一直到用户关闭浏览器。

所以,会话变量保存有关一个用户的信息,并且可用于一个应用程序中的所有页面。

Note 提示: 如果需要永久存储,则可以将数据存储在 数据库 中。

开始一个 PHP 会话(Session)

会话(Session)以 session_start() 函数开始。

Session 变量使用PHP全局变量 $_SESSION 设置。

现在,我们来创建一个名为 "demo_session1.php" 的新页面。在这个页面中,我们启动一个新的PHP会话并设置一些会话变量:

Example

<?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>
运行实例 »
Note 注意: session_start() 函数必须位于任何 HTML 标签之前。

获取 PHP Session变量值

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

Notice that session variables are not passed individually to each new page, instead they are retrieved from the session we open at the beginning of each page (session_start()).

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

Example

<?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>
运行实例 »

显示用户会话的所有会话变量值的另一种方法是运行下列代码:

Example

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

<?php
print_r($_SESSION);
?>

</body>
</html>
运行实例 »
Note 它是如何工作的呢?

大多数会话设置在用户的计算机上看起来像这一个用户密钥:765487cf34ert8dede5a562e4f3a7e12。然后,当在另一页上打开会话时,它会扫描计算机以获取用户密钥。如果有一个匹配,它访问该会话,如果没有,它开始一个新的会话。

修改 PHP Session变量

要更改会话变量,只需对它重新赋值:

Example

<?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

如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。:

Example

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

<?php
// remove all session variables
session_unset();

// destroy the session
session_destroy();
?>

</body>
</html>
运行实例 »