轻松上手,快乐学习!

PHP 教程

PHP 教程PHP 简介PHP 下载安装PHP 语法PHP 注释PHP 变量PHP Echo / PrintPHP 数据类型PHP 字符串PHP 数值PHP MathPHP 常量PHP 运算符PHP If...ElsePHP SwitchPHP 循环While 循环Do While 循环For 循环Foreach 循环Break/ContinuePHP 函数PHP 数组索引数组关联数组多维数组数组排序PHP 全局变量$GLOBALS$_SERVER$_REQUEST$_POST$_GETPHP 正则表达式PHP 表单处理PHP 表单验证PHP 表单验证必填字段PHP 表单验证URL/E-mailPHP 表单验证实例PHP 日期和时间PHP IncludePHP 文件处理PHP 文件打开/读取PHP 文件创建/写入PHP 文件上传PHP CookiesPHP SessionsPHP FiltersPHP Filters AdvancedPHP 回调函数PHP JSONPHP 异常处理PHP 什么是 OOPPHP 类和对象PHP 构造函数PHP 析构函数PHP 访问修饰符PHP 继承PHP 类常量PHP 抽象类PHP 接口PHP 特征PHP 静态方法PHP 静态属性PHP 命名空间PHP 可迭代对象MySQL DatabaseMySQL ConnectMySQL Create DBMySQL Create TableMySQL Insert DataMySQL Get Last IDMySQL Insert MultipleMySQL PreparedMySQL Select DataMySQL WhereMySQL Order ByMySQL Delete DataMySQL Update DataMySQL Limit DataPHP XML ParsersPHP SimpleXML ParserPHP SimpleXML - GetPHP XML ExpatPHP XML DOMAJAX IntroAJAX PHPAJAX DatabaseAJAX XMLAJAX Live SearchAJAX PollPHP 实例PHP 编译器PHP 测验PHP 练习

PHP 参考手册

PHP 概述PHP ArrayPHP CalendarPHP DatePHP DirectoryPHP ErrorPHP ExceptionPHP FilesystemPHP FilterPHP FTPPHP JSONPHP KeywordsPHP LibxmlPHP MailPHP MathPHP MiscPHP MySQLiPHP NetworkPHP Output ControlPHP RegExPHP SimpleXMLPHP StreamPHP StringPHP Variable HandlingPHP XML ParserPHP ZipPHP Timezones


PHP session 会话


PHP session 变量用于存储有关用户会话的信息。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。

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


PHP Session 会话

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

PHP session 解决了这个问题,它通过在服务器上存储用户信息以便随后使用(比如用户名称、购买商品等)。然而,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。

Session 的工作机制是:为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。

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


开始 PHP Session

使用 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 session 会话变量值

接下来,我们创建另一个名为"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>
运行实例 »

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

实例

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

<?php
print_r($_SESSION);
?>

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

它是如何工作的?它怎么知道是我?

大多数会话在用户计算机上设置的用户密钥如下所示:765487CF34ERT8DEDEDA562E4F3A7E12。然后,当在另一个页面上打开会话时,它会扫描计算机以查找用户密钥。如果存在匹配项,则访问该会话;如果不匹配,则启动新会话。


修改 PHP Session 变量

要更改会话变量,只需覆盖它:

实例

<?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():

实例

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

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

// destroy the session
session_destroy();
?>

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

PHP 实验

学习训练

练习题:

创建一个名为"favcolor"的 session 会话变量。

session_start();
["favcolor"] = "green";