2011-06-21 98 views
-2

可能重複:
php headers already sent errorPHP會話頭已經發送錯誤

我重視我的代碼,我使用了PHP中一個非常基本的登錄。它給了一個錯誤

無法發送會話cookie - 標題 已經發出(輸出開始 C:\ XAMPP \ htdocs中\ netsentries \˚F\包括\的functions.php:1)

<?php 
    if (!isset($_POST['username'])) { 
    ?> 
    <h3>Login</h3> 
    <form action="" method="post"> 
    Username<br/> 
    <input name="username" type="text" /><br/> 
    Password<br/> 
    <input name="password" type="password" /><br/> 
    <input name="" type="submit" /><br/> 
    </form> 
    <?php 
    } 
    else 
    { 
    include('includes/config.php'); 

    $data['username']= $_POST['username']; 
    $data['password']= md5($_POST['password']); 

    connect($db_name,$db_user,$db_pass,$db_host); 

    $query= "select * from user where username='" . $data['username'] . "' AND password='" . $data['password'] . "'"; 

     $result=mysql_query($query); 
     //check that at least one row was returned 
     $rowCheck = mysql_num_rows($result); 
     if($rowCheck > 0) 
     { 
     while($row = mysql_fetch_array($result)) 
      { 
      session_start(); 
      session_register($data['username']); 
      //successful login code will go here... 
      //echo 'Logged in!'; 
      } 
     } 
     else 
     { 
     echo "Failed!"; 
     } 



    } 
    ?> 

難道不能找出問題

+0

該錯誤是從文件C來:\ XAMPP \ htdocs中\ netsentries \˚F\包括\ functions.php:1。你確定你沒有調用該文件中的header()函數嗎? –

+3

include('includes/config.php');'? – Neal

+0

檢查C:\ xampp \ htdocs \ netsentries \ f \ includes \ functions.php是否輸出任何內容。 – webspy

回答

3

根本沒有輸出任何HTML後session_start。將session_start調用移到頂部,並保留一個變量以便稍後回顯。任何不在<?php ?>計數,甚至包括您的包含文件。

0

確保絕對沒有您的會議呼叫前正在輸出 - 甚至是空白。 (見佩卡的評論:))

1
include('includes/config.php'); 

尋找該文件中的空白。

特別是後面的?>在文件尾部經常有空白。

因此在您的文件末尾忽略關閉?>。

+0

+1爲省略關閉'?>' - a方便的小費,經常被忽視。 – marramgrass

+0

但建議marramgrass給了也不錯。修復它的另一種方法:) –

2

您需要在頁面上的任何輸出之前放置session_start()。

<?php 
session_start(); 
if (!isset($_POST['username'])) { 
?> 
<h3>Login</h3> 
<form action="" method="post"> 
Username<br/> 
<input name="username" type="text" /><br/> 
Password<br/> 
<input name="password" type="password" /><br/> 
<input name="" type="submit" /><br/> 
</form> 
<?php 
} 
else 
{ 
include('includes/config.php'); 

$data['username']= $_POST['username']; 
$data['password']= md5($_POST['password']); 

connect($db_name,$db_user,$db_pass,$db_host); 

$query= "select * from user where username='" . $data['username'] . "' AND password='" . $data['password'] . "'"; 

    $result=mysql_query($query); 
    //check that at least one row was returned 
    $rowCheck = mysql_num_rows($result); 
    if($rowCheck > 0) 
    { 
    while($row = mysql_fetch_array($result)) 
     { 
     session_register($data['username']); 
     //successful login code will go here... 
     //echo 'Logged in!'; 
     } 
    } 
    else 
    { 
    echo "Failed!"; 
    } 



} 
?> 
2

如果你試圖使用修改標題(如headersession_start)的任何功能,您需要確保沒有事先被輸出,甚至是空白 - 否則你會得到這個錯誤。

2

一半,你有

session_start(); 

但是你不想在這之前的任何輸出。你有-in非常最不這個媒體鏈接發送:

<h3>Login</h3> 
    <form action="" method="post"> 
    Username<br/> 
    <input name="username" type="text" /><br/> 
    Password<br/> 
    <input name="password" type="password" /><br/> 
    <input name="" type="submit" /><br/> 
    </form> 

把頂部的會議:d

相關問題