我使用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