繁体   English   中英

重新加载页面后会话变量为空?

[英]Session variable empty after reloading page?

我有一个带有下拉菜单的简单页面,可在其中选择两个值FOOBAR 所选值应存储在我的会话变量$_SESSION['typ'] 到目前为止,它仍然有效,但是我注意到,每次我按F5键或使用javascript调用location.reload()时,都会出于某种未知原因清除会话变量。

main.php

<?php
ini_set('session.gc_maxlifetime', 1);
session_set_cookie_params(0.1);

session_start();

if (!isset($_SESSION['typ']))
{

    $typ = "FOO";    //load default value
    $_SESSION['typ'] = $typ;
    //---Debug Output----
    $tmpvar = $_SESSION['typ'];
    echo "<p>Session variable is not set</p>";
    echo "<p>Session variable value: '$tmpvar'</p>";
}
else
{   
    //---Debug Output----
    $tmpvar = $_SESSION['typ'];
    echo "<p>Session variable is set, value = '$tmpvar' </p>";

    $typ = $_SESSION['typ'];  //initialise variable $typ with session variable
}
?>

下拉菜单中可以设置$ typ变量。

    <form name="typ_overwrite" method="POST" action="set_typ.php" enctype="multipart/form-data">

        TYP: <select name="typ" id="typ" onchange="document.typ_overwrite.submit()">
<?php
        if($typ == "FOO")
        {
            echo '<option value="FOO">FOO</option>';
            echo '<option value="BAR" selected>BAR</option>';
        }
        elseif($typ == "BAR")
        {
            echo '<option value="BAR">BAR</option>';
            echo '<option value="FOO" selected>FOO</option>';
        }
        else
        {
            echo '<option value="ERROR">ERROR</option>';
        }
?>
        </select>
    </form>

set_typ.php

<?php
    session_start();

    $typ = $_POST['typ'];
    $_SESSION['typ'] = $typ;

    header("location:main.php");
    exit();
?>

如果我第一次加载页面,则输出:

 Session variable is not set Session variable value: 'FOO' 

我从下拉菜单中选择BAR后的输出:

 Session variable is set, value: 'BAR' 

我按F5或呼叫location.reload()后输出

 Session variable is not set Session variable value: 'FOO' 

我希望有人能启发我,为什么重新加载页面时会清除我的Session变量。

我发现了问题...这是因为这行代码现在已按预期工作,因此我对其进行了注释。 有人可以解释我必须在哪里设置吗?

ini_set('session.gc_maxlifetime', 1);

编辑 :原因是gc_maxlifetimes参数单位是秒,而不是我想的小时,因此会话在1秒后过期,因此清除了SESSION变量。 感谢黑格指出这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM