PHP会话存储变量但在更改页面时它们会消失

时间:2014-01-08 10:51:50

标签: php session session-variables

我正在使用ajax和php创建一个在线商店。我的索引有一个带有ajax的登录部分,还有一个导航栏,可以在完成登录时获取用户的名称。

因此,当您登录页面时,表单会将您发送到Login.php,您可以在其中看到会话内容和导航栏的更改,如前所述。

我在索引页面上只有session_start(),它运行正常; SESSION存储了我想要的所有内容并且导航栏工作,显示了名称。但是当我用ajax改变了一些东西并打印出会话(print_r($ _ SESSION))时,结果发现会话已经消失而且没有定义。

一位朋友告诉我把session_start()放在每个页面中,所以我把它放在Login.php文件中,现在会话变量在登录后似乎是空的,所以导航栏甚至都不起作用。

此外,在登录后刷新索引时,它根本不会保持记录状态。

因此,会话似乎存储了变量,但它们不会长时间保存。

我正在尝试使用MVC方案(这是一个赋值)所以我只在索引和登录页面上使用session_start,而不是在“控制器”和“视图”上使用

总而言之,我的会话工作在开始,它存储数据,我更改到第二页仍然工作,加载页面后内容消失,会话未定义,但如果我写下“session_start() “在第二个文件上它甚至不起作用

以下是我从db获取信息的代码。 (我不认为它有用但是)

function Login()
{
    // Skiping conection code

    $sql = "SELECT * FROM Usuario WHERE nombre = '$username' && password = '$password'";
    $resultat = mysqli_query($connexio,$sql)or die(mysqli_error($connexio));
    $usuaris = array();
    while ($fila = mysqli_fetch_array($resultat))
    {
        $usuaris = $fila;
    }   
    $_SESSION['ID'] = $usuaris['ID'];
    $_SESSION['nombre'] = $usuaris['nombre'];
    $_SESSION['admin'] = $usuaris['Admin'];

    mysqli_close($connexio);
    return $usuaris;
}

感谢您的关注

1 个答案:

答案 0 :(得分:0)

在session_start()

之前添加以下内容
session_set_cookie_params(0, "/");