PHP Manual
/
HTTP

会话--PHP中的服务器cookies

06. 11. 2019

Obsah článku

通常我们需要在cookies中存储更多信息,但cookies的最大限制是4 kB,这并不多。Sessions解决了这个问题,它将数据存储在网络服务器上,只在客户的浏览器中存储一个简短的标识符,以区分哪些数据属于哪个客户。

开始一个会议

在对会议做任何工作之前,我们必须首先启动它们。这是通过在脚本开头调用session_start()函数来实现的。

session_start();

强烈警告:在调用session_start()函数之前,不得执行任何输出到HTML的代码!

会话安全

会话的内容存储在服务器上,只有标识符被发送到客户端浏览器,所以用户无法知道会话中存储的内容。脚本影响用户的唯一方法是删除标识符(这时脚本会生成一个新的标识符)。

从一个会话中获取数据

所有的会话都存储在超全局变量$_SESSION中,可以作为一个数组进行遍历。

例如,当前登录的用户的名字可以通过写入来检索。

echo $_SESSION['用户'];

注意:会话可能不总是存在(例如,如果你是一个新用户)。因此,我们应该在任何列表之前始终检查是否存在,并在必要时提供一个替代的错误信息。

if (isset($_SESSION['用户']) && $_SESSION['用户']) {
echo '登录的用户。' . $_SESSION['用户'];
} else {
echo '没有人签入。';
}

将数据保存到会话中

保存是以简单地将数据保存到一个变量中的方式进行的。

$_SESSION['用户'] = '鸿志克';

网络服务器将负责在服务器上正确存储的技术规定,并向用户发送标识符。

删除会话

我们可以根据密钥分别删除单个值。

unset($_SESSION['用户']);

或者是所有可用的会议。

unset($_SESSION);

注意:删除一个特定的会话并不清空键值,而是完全删除键值。因此,当试图读取一个不存在的密钥时,会有一个错误警告被抛出。钥匙的存在总是可以通过isset()函数轻松验证。

最大会话有效期

每个保存的会话都有一个限制,即它在服务器上的保存时间。PHP直接包含一个cron脚本,定期删除旧的会话。

默认值通常是1440秒,也就是24分钟

增加价值需要在2个地方进行。

在PHP中的用法。

// 服务器现在将保持会话长达3600秒=1小时
ini_set('会话.gc_maxlifetime', '3600');
//所有的客户(浏览器)都会被
//发送的会话有效期正好为3600秒
session_set_cookie_params(3600);
session_start(); // 我们可以开始会议了!

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
5.
Status:
All systems normal.
2024