无法修改标头信息 - 已发送的标头

时间:2013-12-16 23:24:09

标签: php mysql

我知道这是众所周知的问题,但我已经尝试了所有解决方案都无济于事(

这是我的代码:

<?php
ob_start();
if (!empty($_POST)) { // if submit
    $username = $_POST['username'];
    $userpass = $_POST['userpass'];

    mysql_connect('localhost', 'root', 'root') or die(mysql_error());
    mysql_select_db('ita4') or die($connection_error);

    function login($username, $userpass) {
        $sqlQuery = "SELECT COUNT(userid) FROM users WHERE name='$username' AND password='$userpass' AND admin='t'";
        $runQuery = mysql_query($sqlQuery);    
        return (mysql_result($runQuery, 0) == 1) ? TRUE : FALSE; 
    }

    if(login($username, $userpass)) {
        setcookie("username", $username, time()+60*60*24*30);
        $_COOKIE['username'] = $username;
        echo "Me:".$_COOKIE['username'];
        //echo "<script> location.replace('done.html'); </script>";
    } else {
        echo "<script> alert('Your input data is not found!'); </script>";
    }

}
?>
<html>

<head>
    <title>Login</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <meta http-equiv=content-type content="text/html; charset=UTF-8"/>
</head>

<body>

<div id="upper">
<a href="index.html">Home</a> &nbsp;•&nbsp; <a href="login.html">Login</a> &nbsp;•&nbsp; <a href="about.html">About</a>

</div>
<div id="container">
    <div id="loginDiv">
        <form action="login.php" onsubmit="return checkEmpty()" method="post" name="loginForm">
            <table>
                <tr>
                    <td style="width:100px">Name: </td>
                    <td>
                    <input name="username" id="username" type="text" style="width:250px"></td>
                </tr>
                <tr>
                    <td style="width:100px">Password: </td>
                    <td>
                    <input name="userpass" id="userpass" type="password" style="width:250px"></td>
                </tr>
                <tr>
                    <td colspan="2" style="text-align:center"><input id="loginImg" type="image" src="images/loginButton.png"></td>
                </tr>
            </table>
        </form>
    </div>
</div>
<div id="lower">
    <br><br><br><br><br>
    <p style="text-align:center">COPYRIGHTS © 2013 &nbsp;&nbsp;•&nbsp;&nbsp; WWW.HISHAM.WS</p>
</div>


<script type="text/javascript">
function checkEmpty() {
    var username = document.getElementById("username").value;
    var userpass  = document.getElementById("userpass").value;

    if(username=="" || username==null) { alert("You've to enter your name!"); }
    else if(userpass=="" || userpass==null) { alert("You've to enter a password!"); }   
    else { return true; } 
    return false; 
}
</script>

</body>

</html>

提前致谢

4 个答案:

答案 0 :(得分:2)

因此,在我最初没有帮助你的反应中,我决定继续像你一样构建数据库和表格。我创建了一个名为ita4的新数据库,并添加了一个名为users的表,其中包含四个字段(userid,name,password和admin)。我添加了一个名为josh的用户,密码为josh,管理员设置为't'。然后我将您的文件放入我的本地开发环境并将其命名为login.php。然后我在浏览器中加载页面并输入josh作为用户名和josh输入密码,结果显示页面顶部显示“Me:josh”,登录页面仍显示在其下方。我没有错。

如果你没有那么远,那么错误信息可能是因为数据库连接细节不好或者你的表没有其中一个字段。在数据库连接代码之后你有一个“或死(mysql_error()”。

答案 1 :(得分:1)

标题需要是文档中的第一件事。您的代码应该类似于

<?php header("header information"); ?>
<html>
 ... Your HTML HERE ...
</html>

可以在PHP文档here中找到更多信息。

答案 2 :(得分:1)

据我所知,如果发生登录,您希望将redirect用户转到另一个页面。

您可以使用 javascript 和/或 meta 重定向来执行此操作。

这个问题也可能会有所帮助:How to redirect if user already logged in

答案 3 :(得分:0)

您没有告诉导致通知的行号。但我认为这是因为你正在做setCookie()

您已使用ob_start()这样做很好。

我建议您注意在ob_start()之前文档的开头应该没有字符。在开始<?php之前,请特别注意任何字符甚至是空格或进入(新行)。让<?php成为您文件中的第一件事。

相关问题