我有一个简单的登录表单,包含用户名和密码。这个表单之后的PHP就是这个
<?php
session_start();
include 'global.php';
// Grab User submitted information
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("SELECT username, password FROM users WHERE username = '$username' and password = '$password'");
$row = mysql_fetch_array($result);
if($row["username"]==$username && $row["password"]==$password)
{
echo 'ok';
}
else {
echo 'not ok';
}
?>
提交后,如果用户名和密码存在,表单会显示正确的消息(确定或不正常),但我似乎做的不仅仅是回显。
当用户存在时,表单必须重定向到index.php-page。我试着把它放在if子句中
header('Location: index.php');
但这不起作用:(
当用户不存在时,它必须在登录表单上显示一条消息。所以我把它放在else子句
中$_SESSION['errors'] = array("Your username or password was incorrect.");
header("Location: login.php");
这会将消息存储在会话中,因此当我将以下代码放在登录表单上时
<?php if (isset($_SESSION['errors'])): ?>
<div class="form-errors">
<?php foreach($_SESSION['errors'] as $error): ?>
<p><?php echo $error ?></p>
<?php endforeach; ?>
</div>
<?php endif; ?>
我希望这也会奏效,但遗憾的是没有。有人可以帮我吗?
答案 0 :(得分:0)
不应该是任何echo,var_dump,print_r或任何html或任何文本 并在标题
之后写出exit()header('Location: index.php');
exit();
答案 1 :(得分:0)
如果你有结果
?>
<?php
标题位置在这种情况下不起作用。
另一种方法是在顶部使用ob_start();
ob_start();
header("Location: yourpage.php");
exit();