我使用ajax和php创建一个在线商店。我的索引有一个与ajax一起显示的登录部分,并且还有一个导航条,在完成登录时获取用户的名称。PHP会话存储变量,但当更改页面时,它们消失
因此,当您登录到页面时,表单会将您发送到Login.php,您可以在其中看到会话的内容以及导航器栏的变化,如前所述。
我只在索引页上有session_start(),它工作正常; SESSION存储了我想要的所有内容以及导航栏,显示了名称。但是当我用ajax改变某些东西并打印出会话时(print_r($ _ SESSION)),结果发现会话消失了,而且没有定义。
一位朋友告诉我在每个页面放置session_start(),所以我把它放在Login.php文件中,现在会话变量在登录后显示为空,所以导航栏甚至不工作。
此外,在登录后刷新索引时,它不会保持记录状态。
因此,Session看起来会存储这些变量,但它们不会长时间保存。
我想使用MVC计划(这是一个任务),所以我只用在session_start上的索引和登录页面,而不是在“控制器”和“意见”
综上所述,我的会话工作在开始,它存储数据,我改变到第二页,仍然有效,加载页面后内容消失,会话未定义,但如果我在第二个文件中记下“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;
}
感谢您的关注
登录作品,这段代码只是为了看看我是如何进入会话变量中的数据 – user3172801
您需要在使用Sessions变量的每个页面上使用session_start()。 – Goikiu
在开始将变量插入$ _SESSION之前,您是否调用session_start()? – martin