我有一个普通的html表单,带有文本输入等。 我有正常的功能来检查数据库的用户名和密码以登录用户。
我的注册和登录页面一切都在Chrome中完美运行,但ie和 firefox等。它会刷新除Chrome之外的所有浏览器中的页面。
我已将该网站上传到免费的虚拟主机上,供您查看。 here
这是php登录的样子:
function login()
{
if(isset($_POST["login"]))
{
connectDB();
$username = mysql_real_escape_string($_POST["username"]);
$password = mysql_real_escape_string($_POST["password"]);
$result = mysql_query("SELECT username FROM users WHERE username = '$username' AND password = '$password'");
if(!$result)
{
die("query failed" . mysql_error());
}
else
{
$count = mysql_num_rows($result);
if($count > 0)
{
$_SESSION['loggedIn'] = $username;
echo "<script>window.location='http://vuilhonde.hostzi.com/';</script>";
header("Location:http://vuilhonde.hostzi.com/");
}
else
{
return "Login failed.</br>* invalid username or password.";
}
}
mysql_free_result($result);
}
}
答案 0 :(得分:2)
在发送标头之前,您不应该回显任何输出。浏览器如何处理可能导致问题的原因。
答案 1 :(得分:2)
一些问题:
Location:
标题在冒号后面需要一个空格,因此它应该是`Location: http://whatever
Location:
标题后面只有浏览器。 HTTP 301,302或303.此时您正在发送200,这意味着浏览器应显示文档的内容。header
函数只有在任何资源内容之前发送它才能正常工作。您之前使用的是echo
,因此无法正常使用。在某些PHP配置中,这将导致显示错误。<script>
代码无效HTML,浏览器可能无法执行(您缺少必需的<html>
元素及其必需的子代。答案 2 :(得分:0)
如果头部中有丢失的文件,例如
<script language="javascript" src="javascript/javascript.js"></script>
如果此文件不存在,则可能导致某些浏览器执行页面刷新。我将尝试重现这个错误(即将更新)或者您可以通过删除该行自己测试它并告诉我们结果是什么。 (如果你这样做,请告诉我们你的浏览器版本)
如果那样
echo "<script>window.location='http://vuilhonde.hostzi.com/';</script>";
发生在<body>
之外,或<head>
内将导致firefox刷新。