session_start()[function.session-start]:无法发送会话缓存限制器

时间:2011-06-08 04:24:28

标签: php

尝试发起会话时,我收到以下警告:

Warning: session_start() [function.session-start]: 
Cannot send session cache limiter - headers already sent 
(output started at /www/zxq.net/l/i/b/librarymanagement/htdocs/public/admin/index.php:2) 
in /www/zxq.net/l/i/b/librarymanagement/htdocs/includes/session.php on line 9

我确保所有空格都清晰,session_start()应该是第一个被调用的东西。我认为在调用session_start()之前还没有发送任何其他内容。

这是我的代码:

class Session {
    private $logged_in=false;
    public $user_id;
    public $message;
    function __construct() {
        session_start();
        $this->check_message();
        $this->check_login();
        if($this->logged_in) {
        } else {
        }
    }

    public function is_logged_in() {
        return $this->logged_in;
    }
    public function login($user) {
        if($user) {
            $this->user_id = $_SESSION['user_id'] = $user;
            $this->logged_in = true;
        }
    }  
    public function logout() {
        unset($_SESSION['user_id']);
        unset($this->user_id);
        $this->logged_in = false;
    }
    public function message($msg="") {
        if(!empty($msg)) {
            $_SESSION['message'] = $msg;
        } else {
            return $this->message;
        }
    }
    private function check_login() {
        if(isset($_SESSION['user_id'])) {
            $this->user_id = $_SESSION['user_id'];
            $this->logged_in = true;
        } else {
            unset($this->user_id);
            $this->logged_in = false;
        }
    }  
    private function check_message() {
        if(isset($_SESSION['message'])) {
            $this->message = $_SESSION['message'];
            unset($_SESSION['message']);
        } else {
            $this->message = "";
        }
    }

}

以下是它的使用方法:

$session = new Session();
$message = $session->message();

可能是什么问题?

4 个答案:

答案 0 :(得分:2)

您正在尝试在响应主体之后或在正文的中间部分发送标头,但在HTTP中不允许...

原因是你启动了代码

\s
<?php

你的空间是你回应的身体部分...... 当你用

完成代码时
?>
\s

此空间也是输出....

答案 1 :(得分:1)

在向客户发送任何数据之前,您需要致电session_start()

答案 2 :(得分:0)

在调用session_start()之前输出。毫无疑问。检查之前是否没有错误消息或警告,在文件开头的任何空格都要小心。

答案 3 :(得分:0)

这是您的错误消息:

  

(输出于/www/zxq.net/l/i/b/librarymanagement/htdocs/public/admin/index.php:2开始)

请阅读。

查看上面提到的文件和行号。有你的问题。