PHP函数仅适用于Chrome

时间:2013-06-06 10:02:58

标签: php internet-explorer function google-chrome browser

我有一个普通的html表单,带有文本输入等。 我有正常的功能来检查数据库的用户名和密码以登录用户。

我的注册和登录页面一切都在Chrome中完美运行,但等。它会刷新除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);
}
}

3 个答案:

答案 0 :(得分:2)

在发送标头之前,您不应该回显任何输出。浏览器如何处理可能导致问题的原因。

答案 1 :(得分:2)

一些问题:

  1. Location:标题在冒号后面需要一个空格,因此它应该是`Location: http://whatever
  2. 当响应具有适当的状态代码时,Location:标题后面只有浏览器。 HTTP 301,302或303.此时您正在发送200,这意味着浏览器应显示文档的内容。
  3. PHP的header函数只有在任何资源内容之前发送它才能正常工作。您之前使用的是echo,因此无法正常使用。在某些PHP配置中,这将导致显示错误。
  4. <script>代码无效HTML,浏览器可能无法执行(您缺少必需的<html>元素及其必需的子代。
  5. 您应该在数据库中散列密码,而不是将其存储为纯文本。此外,您正在执行不区分大小写的谓词。

答案 2 :(得分:0)

如果头部中有丢失的文件,例如

<script language="javascript" src="javascript/javascript.js"></script>

如果此文件不存在,则可能导致某些浏览器执行页面刷新。我将尝试重现这个错误(即将更新)或者您可以通过删除该行自己测试它并告诉我们结果是什么。 (如果你这样做,请告诉我们你的浏览器版本)

如果那样

echo "<script>window.location='http://vuilhonde.hostzi.com/';</script>";

发生在<body>之外,或<head>导致firefox刷新。