我正在使用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;
}
感谢您的关注
答案 0 :(得分:0)
在session_start()
之前添加以下内容session_set_cookie_params(0, "/");