2011-06-21 72 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

相关问题