PHP: 如何防止会话在用户仍处于登录状态时过期
PHP: How to prevent session from expiring while user is still logged in
我是 PHP 的新手,希望有人能帮助我。
我目前使用以下方法创建会话/cookie 并在会话过期或用户未登录时将用户重定向到登录页面。这包括在内在网站的所有页面上。
到目前为止,这似乎按预期工作。但是,当我在较短的生命周期(例如 2 分钟)内对此进行测试时,它还会在我仍在网站上并登录时将我重定向到登录页面。
有什么方法可以将其设置为只要用户在网站上就不会过期吗?只要网站在浏览器中打开?我做了一些研究,但找不到任何合适的教程。
我的PHP:
session_set_cookie_params(86400 * 30, "/");
if(isset($_COOKIE["PHPSESSID"])){
session_id($_COOKIE["PHPSESSID"]);
}
session_start();
$pageURL = basename($_SERVER["REQUEST_URI"]);
$pageName = pathinfo(parse_url($pageURL, PHP_URL_PATH), PATHINFO_FILENAME);
if( (!isset($_SESSION["user"]["status"])) && ($pageName != "login") ){
header("Location: " . $baseURL . "/login.php");
exit;
}
非常感谢您对此提供的任何帮助,
麦克
用户必须浏览到站点上的页面才能保留会话。
一个可能的解决方案是使用定时 ajax 调用来保持会话活动。
每次用户向您的站点发送 HTTP 请求时,包含会话数据的 cookie 都会一起发送,并且服务器会扩展会话。
添加 ajax 刷新会话调用的示例。在加载 jquery 后添加脚本。将每 60 秒向您的域根发送一次 ajax 调用。
setTimeout(function(){
$.get({url:'/'})
}, 60 * 1000);
使用 ajax 来保存会话有点老套,以后可能会导致很多问题。
谨慎使用!
我是 PHP 的新手,希望有人能帮助我。
我目前使用以下方法创建会话/cookie 并在会话过期或用户未登录时将用户重定向到登录页面。这包括在内在网站的所有页面上。
到目前为止,这似乎按预期工作。但是,当我在较短的生命周期(例如 2 分钟)内对此进行测试时,它还会在我仍在网站上并登录时将我重定向到登录页面。
有什么方法可以将其设置为只要用户在网站上就不会过期吗?只要网站在浏览器中打开?我做了一些研究,但找不到任何合适的教程。
我的PHP:
session_set_cookie_params(86400 * 30, "/");
if(isset($_COOKIE["PHPSESSID"])){
session_id($_COOKIE["PHPSESSID"]);
}
session_start();
$pageURL = basename($_SERVER["REQUEST_URI"]);
$pageName = pathinfo(parse_url($pageURL, PHP_URL_PATH), PATHINFO_FILENAME);
if( (!isset($_SESSION["user"]["status"])) && ($pageName != "login") ){
header("Location: " . $baseURL . "/login.php");
exit;
}
非常感谢您对此提供的任何帮助, 麦克
用户必须浏览到站点上的页面才能保留会话。
一个可能的解决方案是使用定时 ajax 调用来保持会话活动。
每次用户向您的站点发送 HTTP 请求时,包含会话数据的 cookie 都会一起发送,并且服务器会扩展会话。
添加 ajax 刷新会话调用的示例。在加载 jquery 后添加脚本。将每 60 秒向您的域根发送一次 ajax 调用。
setTimeout(function(){
$.get({url:'/'})
}, 60 * 1000);
使用 ajax 来保存会话有点老套,以后可能会导致很多问题。 谨慎使用!