警告:session_start() [function.session-start]:不能发送会话缓存限制头已经发送

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

本文关键字:缓存 会话 不能 start session session-start function 警告      更新时间:2023-09-26

我在其他论坛上读过很多,他们说错误是在session_start之前有空白,但我非常肯定没有,我的文件是用UTF8编码的,没有BOM,所以空白问题应该是好的,它在本地工作得很好(我使用easyphp)。然而,我一把它放到网上,它就跳出了这些问题。有人能帮忙吗?他们在网上告诉了这两行错误:

警告:session_start() [function。session-start]:不能发送会话缓存限制器-标头已发送

这是我的代码:

<?php
session_start();
?>

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

你的代码中肯定有一个错误-你有一个附加到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();
?>