由于不活动而销毁会话后修改登录页面


Modify login page after destroying session due to of inactivity

有谁知道当用户因不活动而注销时,我可以更改登录页面信息的实用程序或方法。目前,在几次不活动之后,我弹出一条登录消息并将用户重定向到logout.html,(这是一个tpl),其中会话和cookie被销毁。

我目前正在使用以下方法来重定向用户:

header("Location: " . $this->site->hosts->manager . 'login.php');

重定向后,我想在登录框下方显示一条警报消息,显示"由于不活动而超时"。

关于如何完成此请求的任何建议?

您可以使用标志告诉页面用户注销的原因。

header("Location: " . $this->site->hosts->manager . 'login.php?reason=timedout');

if (isset($_GET['reason']) && $_GET['reason']=="timedout") { echo 'Your session timed out'; }

修改重定向代码以将参数附加到 URL 的末尾:

header("Location: " . $this->site->hosts->manager . 'login.php?e=0'); 

然后,您将通过检查参数是否存在来在login.php页面上引用此参数。 如果存在,则通知用户他们因不活动而注销。

<?php
$error = (isset($_GET['e']) ? $_GET['e'] : '');
$reasons = array(
    '0' => 'Logged out due to inactivity.',
    '1' => 'Invalid Username/Password.'
    );
if(!empty($error) && $error < count($reasons)){
    echo $reasons[$error];
}
?>

上述解决方案利用数组来存储消息,因为您可以利用检查其他通知,例如"无效的用户名/密码"。 此外,它还会进行检查以确保指定的值在数组的边界内。