2016-01-09 3 views
0

я нужна помощь снова ...Ошибка размещения заголовка PHP? Не знаю, как исправить

мой 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) 

Я знаю, что перед заголовком() не должно быть выход ... но я не знаю, как я должен исправить это или где разместить мой заголовок(); что все еще работают ... я попытался вокруг теперь пара часов до сих пор понятий не имеют ...

надежда кто-то может помочь мне здесь :)

ответ

1

Посмотрите, где ваша header функции. Он находится в середине некоторого HTML-кода.

По определению, вы должны отправить свои заголовки до вашего тела (в этом случае ваш HTML). Именно так структурируется ответ HTTP-сервера.

Убедитесь, что любые заголовки, которые вы отправляете, выполнены до выхода даже одного символа вашего тела.

Я не уверен, почему вы отправляете заголовок Location в середине формы. Если вы хотите перенаправить пользователя на новую страницу, создайте новый вопрос о том, как перенаправить пользователя на новую страницу на основе определенного события.

+0

Я не хочу перенаправлять пользователя на новую страницу. Я перенаправляю пользователя на ту же страницу, чтобы страница обновлялась ... когда я пишу что-то в текстовом поле и отправляю его, мне нужно обновить страницу, чтобы показать контент на сайте, потому что я получаю сообщение из базы данных. t знать, понятно ли это:/ – RedFire

+0

Когда вы отправляете форму, она автоматически обновляет страницу, поэтому вам не нужно писать заголовок там. Просто повторите все, что вы получили из базы данных. –

+0

Убедитесь, что вы создали конечную точку PHP для захвата любых данных формы, отправленных при отправке пользователем формы. Только в этот момент вы пишете в базу данных. См. Здесь http://www.w3schools.com/php/php_forms.asp –

Смежные вопросы