試圖發起會話的時候,我發現了以下警告:在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();
可能是什麼問題呢?
您能不能發送代碼部分。但是從頂部到第一次調用試圖設置標題的方法的腳本。請格式化代碼(選擇它並點擊{}按鈕)。最有可能的是,像錯誤狀態一樣,之前輸出的是某些東西。您可以添加: \t ini_set(「error_reporting」,E_ALL); \t ini_set(「display_errors」,1); – Michael 2011-06-08 04:30:13
這很接近,但與幾個類似問題不完全相同,您會在頁面的右側看到它們。我已經對你的問題進行了一些編輯,請在堆棧溢出問題上提出問題時,請記下它們以備將來參考。同樣,你的話題已經被覆蓋了,但似乎你在你的特定實現中大多需要幫助。然而社區可以自由地反對我並投票結束這個問題。 – 2011-06-08 04:34:30
[爲什麼我不能在我的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