我正在使用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;
}
谢谢你的关注
在会话_start()之前添加以下内容
session_set_cookie_params(0, "/");