通常我们需要在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.ini
中,设置了服务器将保持的最大有效性长度。这个值是由session.gc_maxlifetime
指令设置的。在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:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | zh