提问者:小点点

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


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

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

我在索引页上只有session_start(),它工作得很好;会话存储了我想要的一切,导航栏工作正常,显示了名称。但是,当我用ajax更改了一些内容并打印出会话(print\r($\u session))时,结果发现会话已经消失,并且没有定义。

一位朋友告诉我在每个页面中都放session_start(),所以我把它放在了登录中。php文件,现在会话变量在登录后立即显示为空,因此导航栏甚至无法工作。

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

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

我试图使用MVC方案(这是一个任务),所以我只在索引和登录页面上使用会话启动,而不是在“控制器”和“视图”上

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

这是我从数据库获取信息的代码。(我认为这没有用,但是)

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个答案

匿名用户

在会话_start()之前添加以下内容

session_set_cookie_params(0, "/"); 

相关问题