【问题标题】:How do I set specific session timeout options for users to pick. PHP如何设置特定的会话超时选项供用户选择。 PHP
【发布时间】:2015-04-09 11:50:22
【问题描述】:

所以我希望用户在登录时能够从几个选项中进行选择。这些选项用于会话何时超时。因此,如果用户选择选项 1 并登录,10 秒后会话应该结束,他们应该退出。

HTML

旁注 - 这只是感兴趣的 HTML sn-p,显然表单还包括其他内容,如按钮等。

<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 逻辑告诉我应该这样做。没有给出错误。我只包含了一小部分代码,其中的部分是有趣的。我认为帖子越小越干净,人们就越有可能看到错误。

【问题讨论】:

  • 您能否在比较之前回显$_SESSION['discard_after']$now 来测试输出?
  • 您的意思是输出可能有问题吗?代码独立工作,只是不在选项 if 语句中。

标签: php session select timeout


【解决方案1】:

我认为您在这些代码之前还有另一个session_start(); 行,所以当if (isset($_SESSION['discard_after']) &amp;&amp; $now &gt; $_SESSION['discard_after'])

在这个 IF 中,您应该将 session_start(); 替换为 header('location: login.php');exit;

所以你必须将用户踢出你的认证页面。

PS:你不能在执行时使用 2 次 session_start();

【讨论】:

  • 我没有 session_start();在我的功能之前,就在每一页的顶部。当我添加该代码时,它根本不会登录。
猜你喜欢
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多