我昨天在这里发布了一个问题并得到了快速回复。很棒的社区!
我希望有人可以帮助启发我(PHP 的新手)关于我下面的脚本以及为什么它的执行不一致。
我正在使用以下 session.php 文件来检查登录和会话超时:
`
function logged_in() {
return isset($_SESSION['user_id']);
session_write_close();
}
function session_expired() {
$now = time();
$limit = $now - 7200; // 2 hour
return isset($_SESSION['last_activity']) && ($_SESSION['last_activity'] < $limit);
session_write_close();
}
function confirm_logged_in() {
$now = time();
if (session_expired()) {
$_SESSION = array();
if(isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
redirect_to("http://domain.com/login.php?logout=2");
exit;
}
elseif (!logged_in()) {
redirect_to("http://domain.com/login.php");
exit;
}
else {
$_SESSION['last_activity'] = $now;
session_write_close();
}
}
?>`
在每一页的顶部,我有:
<?php require_once("../includes/session.php"); ?>
<?php require_once("../includes/functions.php"); ?> defines some other functions I use
<?php confirm_logged_in(); ?>
发生的事情是 session_expired() 并不总是被触发,而不是 redirect_to(" http://domain.com/login.php?logout=2 "); 它转到redirect_to(“ http://domain.com/login.php ”);
谁能看到可能出了什么问题?