2014-09-04 3 views
0

У меня есть эмитент в моих файлах php get in index.php сообщения Предупреждение: session_start(): Не удается отправить ограничитель кеша сеанса - уже отправленные заголовки (вывод запущен в/Users/[имя пользователя] ] /Sites/application/Core/users.php:3) в /Users/[username]/Sites/application/Core/session.php на линии 20сеанс сеанса Предупреждение session_start() в php 5.4

<?php 
// A class to help work with Sessions 
// In our case, primarily to manage logging users in and out 

// Keep in mind when working with sessions that it is generally 
// inadvisable to store DB-related objects in sessions 


require_once('includes/initialize.php'); 

class Session{ 


    private $logged_in=false; 
    public $id; 


    function __construct() { 
     //@ob_start(); 
     session_start(); 
     $this->check_login(); 

     if($this->logged_in) { 

     }else{ 

     } 


    } 


    public function is_logged_in() { 
     return $this->logged_in; 
    } 

    public function login($username) { 
    // database should find user based on username/password 
     if($username){ 
      $this->id = $_SESSION['id'] = $username->id; 
      $this->logged_in = true; 
     } 
    } 


    public function logout() { 
     unset($_SESSION['id']); 
     unset($this->id); 
     $this->logged_in = false; 
    } 



    private function check_login() { 
     if(isset($_SESSION['id'])) { 
      $this->id = $_SESSION['id']; 
      $this->logged_in = true; 
     } else { 
      unset($this->id); 
      $this->logged_in = false; 
     } 
    } 
} 

$session = new Session(); 

?> 
+0

check '/ Пользователи/[имя_пользователя] /Sites/application/Core/users.php: 3 это что-то эхо? даже пустое пространство вне '' считается выходным – bansi

ответ

1

session_start(); должен быть назван прежде всего. Вам нужно вытащить его из своего конструктора и поместить его перед оператором require_once.

Смежные вопросы