如何为用户选择特定的会话超时选项。 PHP

时间:2015-04-09 11:50:22

标签: php session select timeout

所以我希望用户在登录时能够从几个选项中选择。这些选项适用于会话超时的时间。因此,如果用户选择选项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逻辑告诉我它应该。没有错误。我只包含了少量的代码,其中的部分内容是有意义的。我认为清洁工具的尺寸越小,人们就越有可能看到错误。

1 个答案:

答案 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();