我正在嘗試使用header("location")
的公式。PHP數據會話重定向破壞
除了一件事情它工作得很好。當即時通訊嘗試設置持有該消息的會話它設置會話,但當我試圖寫出來,問題開始..
它像他走進去,如果然後刪除cookie,跳出當且改掉再次那裏..
這裏是我的代碼:
if (isset($_SESSION['sess_error'])) {
echo '<div class="alert alert-danger">';
foreach ($_SESSION['sess_error'] as $val) {
echo $val.'<br>';
}
unset($_SESSION['sess_error']);
}
if (empty($_POST['username'])) { $error[] = 'Du måste fylla i ett användarnamn...'; }
if (empty($_POST['password'])) { $error[] = 'Du måste fylla i ett lösenord...'; }
elseif ($sql->num_rows == 0) { $error[] = 'Något fel uppstog, du kunde inte bli inloggad...'; }
if (count($error) > 0) {
$_SESSION['sess_error'] = $error;
}
任何人有任何想法,爲什麼發生這種情況,我可以做些什麼來阻止它呢?
整個腳本:
<?php
SESSION_START();
if (isset($_POST['login'])) {
$error = null;
$username = $_POST['username'];
$password = $_POST['password'];
$sql = $mysqli->query("SELECT * FROM users WHERE username='".$username."' AND password='".$password."' LIMIT 1");
if (empty($_POST['username'])) { $error[] = 'Du måste fylla i ett användarnamn...'; }
if (empty($_POST['password'])) { $error[] = 'Du måste fylla i ett lösenord...'; }
elseif ($sql->num_rows == 0) { $error[] = 'Något fel uppstog, du kunde inte bli inloggad...'; }
if (count($error) > 0) {
$_SESSION['sess_error'] = $error;
}
else {
while ($r = $sql->fetch_array()) {
$_SESSION['sess_username'] = $r['username'];
$_SESSION['sess_userID'] = $r['userID'];
$_SESSION['sess_admin'] = $r['admin'];
$_SESSION['sess_logg'] = 1;
}
}
header("Location: ./");
}
?>
你什麼時候使用重定向?請添加重定向部分 –
我認爲您在重定向之前顯示錯誤。當頁面重定向時,會話將被取消設置,並且消息不會顯示在重定向頁面中 – shanavascet
您是否在構建表單驗證?如果是這樣,請保持在同一頁面上並將這些錯誤添加到表單域。 – Ruben