2011-06-08 50 views
0

試圖發起會話的時候,我發現了以下警告:在session_start()[function.session啓動]:無法發送會話緩存限制器

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(); 

可能是什麼問題呢?

+0

您能不能發送代碼部分。但是從頂部到第一次調用試圖設置標題的方法的腳本。請格式化代碼(選擇它並點擊{}按鈕)。最有可能的是,像錯誤狀態一樣,之前輸出的是某些東西。您可以添加: \t ini_set(「error_reporting」,E_ALL); \t ini_set(「display_errors」,1); – Michael 2011-06-08 04:30:13

+0

這很接近,但與幾個類似問題不完全相同,您會在頁面的右側看到它們。我已經對你的問題進行了一些編輯,請在堆棧溢出問題上提出問題時,請記下它們以備將來參考。同樣,你的話題已經被覆蓋了,但似乎你在你的特定實現中大多需要幫助。然而社區可以自由地反對我並投票結束這個問題。 – 2011-06-08 04:34:30

+0

[爲什麼我不能在我的php腳本中使用session_start()?它說頭已經發送。](http://stackoverflow.com/questions/712326/why-cant-i-use-session-start-in-my-php-script-it-says-headers-are-already -sen) – mario 2011-06-08 04:34:57

回答

2

你試圖響應或在身體的中間部分身體後,發送標題,它不是在HTTP不允許...

的原因是,如果你開始你的代碼

你的空間是你的反應...... 的主體部分,當你與

?> 
\s 

完成你的代碼,這個空間是輸出太....

1

你需要的任何數據發送到客戶端

0

之前調用session_start()你必須在調用之前輸出在session_start()。毫無疑問。檢查是否沒有錯誤消息或在此之前拋出的警告,在文件開頭處的任何空白處都很疲倦。

0

這是你的錯誤信息:

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

請閱讀。

看看上面提到的文件和行號。有你的問題。

相關問題