警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 已发送的标头

时间:2015-07-29 07:52:11

标签: javascript php mysql

我在其他论坛上经常阅读,他们说错误是在session_start之前有空格,但是我非常确定没有,我的文件是编码的UTF8没有BOM,因此白空间问题应该没问题,并且它在本地完美运行(我使用easyphp)。不过,只要我把它放在网上,它就会让我遇到这些问题。任何人都可以提供帮助吗?他们在网上告诉这两行错误:

  

警告:session_start()[function.session-start]:无法发送会话   缓存限制器 - 已发送的标头

这是我的代码:

<?php
session_start();
?>

2 个答案:

答案 0 :(得分:0)

警告意味着已经发送了HTTP标头,并且不再修改它们。您必须确保在session_start之前不发送任何内容。把它放在你的第一个PHP脚本之上,在任何echo或HTML之前,你会没事的。

答案 1 :(得分:0)

您的代码肯定存在错误 - 您有一个附加到while循环的else条件,也许您错误地发布了它,但为什么有两个session_start()调用?假设这是一页!

<?php 
    session_start(); 
    $uname=$_SESSION['name'];
?>
<?php 
    /*session_start();*/
    $servername = "68.178.143.40"; 
    $username = "applicant123"; 
    $password = "Applicant@123"; 
    $dbname = "applicant123"; 

    $conn = new mysqli($servername, $username, $password, $dbname); 
    if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } 
    $uname=$_SESSION['name']; 
    $sql = "SELECT * FROM consultant WHERE username='uname' "; 
    $result = $conn->query( $sql ); 
    if ( $result->num_rows > 0 ) {

    /* Here is a problem - there should be no "else" */
    /*
    while( $row = $result->fetch_assoc() ) {

    } else { 
        echo "0 results"; 
    }
    */


    while( $row = $result->fetch_assoc() ) {
        /* do stuff with recordset */
    }

    $conn->close();
?>