php守 登录超时弹窗,PHP的登录会话超时错误

我正在创建一个登录脚本,当用户登录时,他将能够停留3个小时,然后系统将其注销。

以下是我的login.php

....

$_SESSION['dgUserLoggedIn'] = true;

$_SESSION['timeout'] = time();

....

每个页面顶部需要验证的login-check.php:

function isLoginSessionExpired() {

$login_session_duration = 10800;

$current_time = time();

if(isset($_SESSION['timeout']) and isset($_SESSION['dgUserLoggedIn'])){

if(((time() - $_SESSION['timeout']) > $login_session_duration)){

session_regenerate_id(true);    // change session ID for the current session and invalidate old session ID

$_SESSION['timeout'] = time();  // update creation time

return true;

}

}

return false;

}

if(isset($_SESSION["dgUserLoggedIn"])) {

if(isLoginSessionExpired()) {

header("Location: /core/logout.php");

}

}

使用上面的代码,用户将在30分钟左右后自动注销,如何确保用户可以保持登录状态3小时,并且每次页面刷新或访问时间都会自动更新。

下面是我的session-setup.php

// **PREVENTING SESSION HIJACKING**

// Prevents javascript XSS attacks aimed to steal the session ID

ini_set('session.cookie_httponly', 1);

// Adds entropy into the randomization of the session ID, as PHP's random number

// generator has some known flaws

ini_set('session.entropy_file', '/dev/urandom');

// Uses a strong hash

ini_set('session.hash_function', 'whirlpool');

// **PREVENTING SESSION FIXATION**

// Session ID cannot be passed through URLs

ini_set('session.use_only_cookies', 1);

// server should keep session data for AT LEAST 1 hour

ini_set('session.gc_maxlifetime', 3600);

// each client should remember their session id for EXACTLY 1 hour

session_set_cookie_params(3600);

// Uses a secure connection (HTTPS) if possible

ini_set('session.cookie_secure', 1);

session_start();

尝试使用小于运算符。来更改if(((time() - $_SESSION[timeout]) > $login_session_duration)){。

您也可以尝试在运行时使用ini_set更改值:

ini_set('session.gc_maxlifetime', '10800');

要么

您可以在php.ini文件中更改此行。

session.gc_maxlifetime = 1440

更新:这似乎有可能,所以我纠正了

php_value

session.gc_maxlifetime = 10800

我希望这会有所帮助

首先检查服务器上的默认会话超时设置,然后在代码中添加以下行。 我希望它对你有用

会话的默认超时为24分钟(1440秒)。

请检查PHP会话默认超时

您是否检查了php.ini文件中session.gc_maxlifetime的值? 我猜这是导致问题的原因

我把我的session-setup.php @Atif

您可以检查session.gc_divisor和session.gc_probability的值吗? 看看stackoverflow.com/questions/3428153/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值