我正在尝试使用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