所以我希望用户在登录时能够从几个选项中选择。这些选项适用于会话超时的时间。因此,如果用户选择选项1并登录,10秒后会话应该结束,他们应该被注销。
HTML
附注 - 这只是感兴趣的HTML片段,显然表单包含其他内容,如按钮等。
<form id="logged" method="POST" action="thisdocument.php">
<select name="options">
<option value="test">10s</option>
<option value="hour">1hr</option>
</select>
</form>
PHP
旁注 - 执行实际超时的代码可以自行正常工作。因此,如果我将它放在没有用户选项的页面上,当用户登录时,它将在我指定的时间内超时,但我的问题是根据他们想要登录的时间使这个可选。
$opt = (isset($_POST['options']) ? $_POST['options'] : null);
if ($opt == "test") {
$now = time();
if (isset($_SESSION['discard_after']) && $now > $_SESSION['discard_after']) {
session_unset();
session_destroy();
session_start();
}
$_SESSION['discard_after'] = $now + 10;
}elseif ($opt == "hour"){
echo "1 Hour"; //I'm just leaving these like this to save space. If we can sort out the first, I can just use it for the second option.
}else{
echo "";
}
所以我不确定为什么,但这似乎不起作用,我的初学者级PHP逻辑告诉我它应该。没有错误。我只包含了少量的代码,其中的部分内容是有意义的。我认为清洁工具的尺寸越小,人们就越有可能看到错误。
答案 0 :(得分:0)
我认为您在这些代码之前有另外session_start();
行,所以当if (isset($_SESSION['discard_after']) && $now > $_SESSION['discard_after'])
在此IF的内部,您应该将session_start();
替换为header('location: login.php');exit;
因此您必须将用户踢出经过身份验证的网页。
PS:你执行时不能使用2次session_start();
。