$ _SESSION array()具有到期时间

时间:2014-01-06 16:53:48

标签: php arrays session

所以我发现这个tutorial创建了一个唯一的ID来防止重复的表单提交,这是我正在使用的脚本:

// start session
session_start();

// set page instance id
if (!isset($_SESSION['page_instance_ids'])) {
    $_SESSION['page_instance_ids'] = array();
}
$_SESSION['page_instance_ids'][] = uniqid('', true);

// form processing logic
$page_id_index = array_search($_POST['page_instance_id'], $_SESSION['page_instance_ids']);
if ($page_id_index !== false) {
    unset($_SESSION['page_instance_ids'][$page_id_index]);
    // do form processing

} 

如果我在另一个标签页面中打开表单,结果是:

["page_instance_ids"]=>
  array(2) {
    [0]=>
    string(23) "52cada0446c6a1.79120890"
    [1]=>
    string(23) "52cada0bb62bc0.91394639"
  }

最后建议:

考虑在会话数组中保存每个page_instance_id的时间戳,或者将会话数组限制为最新的n值,以便清除从未用于提交表单的任何旧页面实例ID。

我有这段代码在X时间之后取消所有会话:

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
// last request was more than 30 minutes ago
session_unset(); // unset $_SESSION variable for the run-time
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

我想知道UNSET是否有任何方法可以独立创建的数组中的每个字符串......就像建议的那样。

0 个答案:

没有答案