【发布时间】:2015-04-13 22:33:43
【问题描述】:
我试图在 2 分钟后通过unsetsession.php 释放/取消设置会话变量:
<?php
session_start();
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 120)) {
// last request was more than 2 minutes ago
unset($_SESSION['logged_in']); // unset $_SESSION variable for the run-time
unset($_SESSION['LAST_ACTIVITY']);
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
?>
会话变量在哪里:
$_SESSION['logged_in'] = 1;
$_SESSION['LAST_ACTIVITY'] = time();
但是,会话变量不会取消设置,而是在我刷新页面时取消设置。该页面正在调用文件 unsetsession.php。为什么会话在 2 分钟后仍未取消设置?
EDIT:页面file.php 在页面顶部有<?php include("includes/unsetsession.php") ?>。在浏览器上刷新file.php 时,会话变量$_SESSION['logged_in'] = 1; 的值变为0。2 分钟后不会改变。只有在页面刷新时才变为0。
我通过在浏览器上运行 getsession.php 来检查值,即:
<?php
session_start();
if(isset($_SESSION['logged_in']))
echo "1";
else
echo "0";
?>
【问题讨论】:
-
他们没有错。
-运算符的优先级高于>,所以没关系 -
@developerwjk 它确实对我造成了破坏。我在页面中以
<?php include("includes/unsetsession.php") ?>调用了unsetsession.php。此外,该值不会在 2 分钟到期后重置。有什么指点吗? -
“当我刷新页面时它们没有被取消设置但被取消设置”是什么意思?如果您刷新页面并且刷新是在设置变量两分钟后进行的,则它们应该被取消设置。编辑:当您的页面加载时,您的 php 脚本只会被调用一次。这就是为什么它只会在你刷新它时破坏变量:如果你不刷新它就不会运行脚本
-
@developerwjk 取消设置会话的代码 - 上面在 qestion 中发布的代码
-
@Angivare 上面的代码来自
unsetsession.php。会话变量不会在 2 分钟后取消设置。但是,每当我刷新页面时,该值都是未设置的
标签: javascript php session session-variables session-timeout