错误的电子邮件和密码"当我错误地填写表单时,消息不会显示。
我的代码开头有ob_start();
- 这会导致什么吗?如果我删除ob_start();
,则会出现以下错误:
无法修改标题信息
我该如何解决这个问题?
<?php
if (isset($_POST['login'])) {
$email = $password = $error = "";
$email = $_POST['email'];
$password = md5($_POST['password']);
if (empty($email) || empty($password)) {
$error = "Please enter your Email and Password!";
} else {
$sql = "SELECT * FROM tbl_users WHERE email='$email' && password='$password'";
$res = mysql_query($sql);
$user = mysql_num_rows($res);
if ($user['blocked'] == 'YES') {
$error = "Your Account has been blocked. Please contact us for more info";
} else {
if ($user == 1) {
$_SESSION['current_user'] = $email;
header("Location: edit_profile.php");
exit();
} else {
$error = "Wrong Email and Password";
}
}
}
}
?>
答案 0 :(得分:0)
ob_start()
打开输出缓冲;在您明确检索输出缓冲区的内容并停止缓冲(例如,使用ob_end_clean()
或类似功能)之前,屏幕上不会显示任何内容。你还没有这样做,所以即使你使用了echo
,也没有得到任何输出。
您需要像这样调整if
/ else
块:
if ($user == 1) {
$_SESSION['current_user'] = $email;
header("Location: edit_profile.php");
exit();
} else {
ob_end_clean(); // add this line
$error = "Wrong Email and Password";
}
此外,您的代码有几个大问题:
mysql_*
; mysql_*
函数已过时,deprecated且不安全。请改用MySQLi
或PDO
。