Php 由于不活动,在销毁会话后修改登录页

Php 由于不活动,在销毁会话后修改登录页,php,Php,是否有人知道一个实用程序或方法,当用户因不活动而注销时,我可以通过该实用程序或方法更改登录页信息。目前,在几次不活动之后,我弹出一条登录消息,并将用户重定向到logout.html,((这是一个tpl),其中会话和cookie被销毁 我当前正在使用以下命令重定向用户: header("Location: " . $this->site->hosts->manager . 'login.php'); 重定向后,我想在登录框下方显示一条警告消息,显示“由于不活动而超时” 关于如何

是否有人知道一个实用程序或方法,当用户因不活动而注销时,我可以通过该实用程序或方法更改登录页信息。目前,在几次不活动之后,我弹出一条登录消息,并将用户重定向到
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'; }

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

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];
}
?>


上述解决方案使用一个数组来存储消息,因为您可以使用对其他通知(如“无效用户名/密码”)的检查。此外,它会检查以确保指定的值在数组的范围内。

修改重定向代码以将参数附加到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];
}
?>


上述解决方案使用一个数组来存储消息,因为您可以使用对其他通知(如“无效用户名/密码”)的检查。此外,它会检查以确保指定的值在数组的范围内。

不要忘记检查是否存在
$\u GET['reason']
首先。否则,如果它没有包含在URL中,您将得到一个错误。
如果(!empty($\u get['reason'])和&$\u get['reason']='timedout'){…}
@curtisdf Good save,还没有使用过!以前是空的,所以我会用我所知道的来保证安全。
isset()
在这种情况下实际上更有效一些
empty()
在内部执行
isset()
,同时检查值是否为,呃,空。;-)@curtisdf So,
!empty()
会导致index.php?reason=之类的失败,而
isset()
则会是true?完全正确<代码>!在这种情况下,empty()将返回
FALSE
,而
isset()
将返回
TRUE
。不要忘记先检查
$\u GET['reason']
是否存在。否则,如果URL中没有包含它,您将得到一个错误<代码>如果(!empty($\u GET['reason'])和&$\u GET['reason']=='timedout'){…}@curtisdf保存良好,尚未使用!之前清空,这样我就可以安全地使用我知道的内容。
isset()
也可以工作。:-)在这种情况下,它实际上更有效一些
empty()
在内部执行
isset()
,同时检查值是否为,呃,空。;-)@curtisdf So,
!empty()
会导致index.php?reason=之类的失败,而
isset()
则会是true?完全正确<代码>!在这种情况下,empty()将返回
FALSE
,而
isset()
将返回
TRUE