我是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;
}
非常感谢您对此提供的任何帮助, 麦克
答案 0 :(得分:2)
用户必须浏览网站上的页面才能保留会话。
一种可能的解决方案是使用定时ajax调用来保持会话活跃。
每次用户向您的站点发送http请求时,包含会话数据的cookie都会一起发送,服务器会扩展会话。
向刷新会话添加ajax调用的示例。加载jquery后添加脚本。将每隔60秒向您的域根发送一次ajax调用。
setTimeout(function(){
$.get({url:'/'})
}, 60 * 1000);
使用ajax来保存会话是一种hackish,可能会在以后导致很多问题。 请谨慎使用!