无法使用MySQL和PHP修改标题信息

无法使用MySQL和PHP修改标题信息,php,Php,这是我的密码。。。我不明白为什么它总是这么说 Warning: Cannot modify header information - headers already sent by (output started at /opt/apache/htdocs/save/header.php:10) in /opt/apache/htdocs/****/attendance.php on line 41 Warning: Cannot modify header information - hea

这是我的密码。。。我不明白为什么它总是这么说

Warning: Cannot modify header information - headers already sent by (output started at /opt/apache/htdocs/save/header.php:10) in /opt/apache/htdocs/****/attendance.php on line 41

Warning: Cannot modify header information - headers already sent by (output started at /opt/apache/htdocs/save/header.php:10) in /opt/apache/htdocs/****/attendance.php on line 42
我只想登录页面的工作。我还想将$_服务器[PHP_SELF()]更改为实际的url,这样我的css等仍然可以工作

include('header.php');
$server = "serverName";
$dUsername = "username";
$dPass = "password";
$username = "username2";
$password = "password2";
$randomword = "randomword";

if(isset($_COOKIE['MyLoginPage'])) {
    if($_COOKIE['MyLoginPage'] == md5($password.$randomword)) {
        $conn = mysql_connect($server, $dUsername, $dPass) or die("error connecting to MySQL database");
        mysql_select_db("w3_save", $conn);
        $query = "SELECT DISTINCT MemberName FROM attendance;";
        $result = mysql_query($query, $conn) or die(mysql_error());
        echo "<div id='rightColumn'><div id='title'><h1>Attendance</h1></div><div id='content'>";
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
            echo "Name: $row[MemberName] <br />";
        }
        echo "</div></div></body></html>";

        mysql_close($conn);
        exit;
    }
    else {
        echo "<p>Bad Cookie. Please clear them out and try again</p>";
        exit;
    }
}

if(isset($_GET['p']) && $_GET['p'] == 'login') {
    if($_POST['name'] != $username) {
        echo "<p>Sorry the username you entered is incorrect.</p>";
        exit;
    }
    else if($_POST['pass'] != $password) {
        echo "<p>Sorry the password you entered is incorrect.</p>";
        exit;
    }
    else if($_POST['name'] == $username && $_POST['pass'] == $password) {
        **setcookie('MyLoginPage', md5($_POST['pass'].$randomword));  LINE 41
        header("Location: $_SERVER[PHP_SELF]");** LINE 42
    } else {
        echo "<p>Sorry you could not be logged in at this time please try again</p>";
    }
}


<div id='rightColumn'>
            <div id='title'>
                <h1>Attendance</h1>
            </div>
            <div id='content'>
                <form action="``<?php echo $_SERVER['PHP_SELF']; ?>?p=login" method='post'>
                <label>Username: <input type='text' name='name' id='name' /></label><br />
                <label>Password:  <input type='password' name='pass' id='pass' /></label><br />
                <input type='submit' id='submit' value='Login' />
                </form>
            </div>
        </div>
    </body>
</html>
include('header.php');
$server=“serverName”;
$dUsername=“用户名”;
$dPass=“密码”;
$username=“username2”;
$password=“password2”;
$randomword=“randomword”;
如果(isset($\u COOKIE['MyLoginPage'])){
如果($_COOKIE['MyLoginPage']==md5($password.$randomword)){
$conn=mysql\u connect($server、$dUsername、$dPass)或die(“连接到mysql数据库时出错”);
mysql\u select\u db(“w3\u save”,$conn);
$query=“从考勤中选择不同的成员名;”;
$result=mysql\u query($query,$conn)或die(mysql\u error());
回应“出席”;
而($row=mysql\u fetch\u array($result,mysql\u ASSOC)){
echo“Name:$row[MemberName]
”; } 回声“; mysql_close($conn); 出口 } 否则{ echo“坏饼干。请清除它们,然后重试”

; 出口 } } 如果(isset($\u GET['p'])&&&$\u GET['p']=='login'){ 如果($\u POST['name']!=$username){ echo“对不起,您输入的用户名不正确。

”; 出口 } else if($\u POST['pass']!=$password){ echo“对不起,您输入的密码不正确。

”; 出口 } 否则如果($\u POST['name']=$username&$\u POST['pass']=$password){ **setcookie('MyLoginPage',md5($_POST['pass'].$randomword));第41行 标题(“位置:$\u服务器[PHP\u SELF]”;**第42行 }否则{ echo“很抱歉,此时无法登录,请重试”

; } } 出席
您可以尝试将第42行更改为以下内容:

header("Location: $_SERVER[PHP_SELF]",TRUE,302);
重定向到新页面并在解析html之前使用SendCookie

我建议使用ob_start和end,但如下所示:

ob_start();
//your html
$content = ob_get_contents();
ob_end_clean();
在那里找到更多信息

如评论中所述,错误消息是不言自明的。显然,
header.php
正在开始输出。你应该找出原因。解决方法是使用输出缓冲:

ob_start();
include('header.php');
...
ob_end_flush();
?>
这将防止在调用flush函数之前发送任何输出


至于
$\u SERVER['PHP\u SELF']
:您不应该编辑超全局变量。在本例中,您要查找的信息位于不同的索引中:
$\u SERVER['REQUEST\u URI']

请参阅右侧的“相关”问题的长列表?选择一个。看看Attention.php:第41行,错误消息应该是自我解释的。是的,我之前检查过echo语句,我尝试过转换代码,我尝试过一些随机的其他事情,但没有发现我的问题。我知道存在相关问题,但我想更具体地了解我的代码。另外,我还想得到一些帮助,将$_服务器['PHP_SELF']更改为我想要的url。我不确定这是否和将陈述更改为我想要的一样简单。下次,请在键入时阅读问题标题下方出现的内容,然后转到“提问”表格中的描述。对不起,有什么这么难理解?在发送标题之前,您不能输出任何内容!(这意味着,使用header()、setcookie()和其他特殊函数)非常感谢您,非常感谢您,非常感谢您!解决了我所有的问题