PHP标头位置错误?不知道如何解决

时间:2016-01-09 00:36:22

标签: php html

我再次需要帮助......

我的PHP代码:

<?php session_start();
include_once 'init.inc.php'; // connection to database
include_once 'testFunc.php'; 

在我的testFunc.php里面是这样的:

<?php
function loggedIn(){

if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])){

    return true;
} else{

    return false;

}

} 

在我的test1中是这样的:

<?php

if(loggedIn()){
?>
<a href="test.php">Home</a>|
<a href="testMessage.php">Messages</a>|
<a href="testLoggout.php">Log out</a>
<?php
}else{
    ?>
    <a href="test.php">Home</a> |
    <a href="testLogin.php">Log In</a>|
    <a href="testRegister.php">Register</a>
<?php
}
?>

include_once 'test1.php';
?>

//这里启动主要部分。     

<head> // here is line 8 in my code here it gives me the error.

</head>

 <body>

 <h3>Conversation - Message System</h3>
 <?php include_once 'testMessageBar.php' ?>
 <?php
 $my_id = $_SESSION['user_id'];
 ?>
 <br>

 <div>
 <?php

 if(isset($_GET['hash']) && !empty($_GET['hash'])){

    $hash = $_GET['hash'];
    $message_query = mysqli_query($db,"SELECT from_id, message FROM messages WHERE group_hash='$hash'");
    while($run_message = mysqli_fetch_array($message_query)){

            $from_id = $run_message['from_id'];
            $message = $run_message['message'];

        $user_query = mysqli_query($db, "SELECT username FROM users1 WHERE id='$from_id'");
        $run_user = mysqli_fetch_array($user_query);
        $from_username = $run_user['username'];

        echo "<p><b>$from_username</b><br/>$message</p>";
    }

    ?>
    <br/>
        <form method="post">
            <?php
            if(isset($_POST['message']) && !empty($_POST['message'])){
                $new_message = $_POST['message'];
                mysqli_query($db, "INSERT INTO messages VALUES('','$hash','$my_id','$new_message')");
                header('location: testConversation.php?hash='.$hash);

            }
            ?>
                Enter Message: <br/>
            <textarea name="message" rows="6" cols="30"></textarea>
            <br/></br>
            <input type="submit" value="Send Message">
        </form>
<?php

}else{

    echo "<b>Select Conversation </b>";
    $get_con = mysqli_query($db,"SELECT hash, user_one, user_two FROM message_group WHERE user_one='$my_id' OR user_two='$my_id'");
    while($run_con = mysqli_fetch_array($get_con)){
        $hash = $run_con['hash'];
        $user_one = $run_con['user_one'];
        $user_two = $run_con['user_two'];

        if($user_one == $my_id){

                $select_id = $user_two;
        }else{

            $select_id = $user_one;

        }
            $user_get = mysqli_query($db, "SELECT username FROM users1 WHERE id='$select_id'");
            $run_user = mysqli_fetch_array($user_get);
            $select_username = $run_user['username'];

                echo "<p><a href='testConversation.php?hash=$hash'>$select_username</a></p>";

    }
}

?>
</div>

</body>
</html>

我收到了这个错误...

 Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/project/sites/test1.php:8)

我知道在header()之前不应该有输出...但我不知道我应该如何修复这个或在哪里定位我的header();一切都还在工作......我现在试了好几个小时仍然不知道...

希望有人可以帮助我:)

1 个答案:

答案 0 :(得分:1)

查看header功能的位置。它位于一些HTML代码的中间。

根据定义,您必须在之前发送标题(在本例中为HTML)。它只是HTTP服务器响应的结构。

确保您输出的任何标题都在输出之前完成,即使是您身体的一个字符。

我不确定您为什么要在表单中间发送Location标头。如果您想将用户重定向到新页面,请创建一个新问题,询问如何根据特定事件将用户重定向到新页面。