2016-04-28 36 views
0

我在嘗試設置我的登錄系統時出錯,我嘗試了多個「解決方案」,但沒有一個可以工作,例如把start_session上的所有腳本的頂部警告:session_start():無法發送會話緩存限制器 - 已發送頭文件(輸出開始於

警告:在session_start():不能發送會話緩存限制器 - 頭 已經發出(輸出開始 TEST4 \的index.php:)。在 test4 \ classes \ Login.php on line 28


行311:

<?php // line 311 
    if (version_compare(PHP_VERSION, '5.3.7', '<')) { 
     exit("Please upgrade the PHP version to 5.3.7 or higher."); 
    } else if (version_compare(PHP_VERSION, '5.5.0', '<')) { 
     require_once("libraries/password_compatibility_library.php"); 
    } 

    require_once("config/db.php"); 
    require_once("classes/Login.php"); 

    $login = new Login(); 

線28班/ login.php中:

<?php 
class Login { 
    private $db_connection = null; 
    public $errors = array(); 
    public $messages = array(); 
    public function __construct() { 

     session_start(); // line 28 

預先感謝您!

+0

爲什麼你在311行有一個開放的php標籤?這意味着在這之前有一些非php,即使它只是一個新行...... – jeroen

+0

@jeroen實際上在311行之前只有HTML –

回答

3

session_start()功能應該是在你的文件中像這樣的頂部:

<?php 
session_start(); // Should be on top when using $_SESSION 

class Login { 
    private $db_connection = null; 
    public $errors = array(); 
    public $messages = array(); 
    public function __construct() { 

     // Rest of your scripts 

這個錯誤造成的,因爲在那裏發送已經所以它是後期加載session_handler()無論是頭,這就是爲什麼你必須把它在你的文件上加載頭文件。

如果你使用一個框架,其中包括頁面,你只需要在主文件中使用session_start()一次(例如的index.php),在那裏你包括其它文件

我希望這會幫助你。

+0

感謝您輸入C0dekid,但這似乎不起作用對於我:'警告:session_start():無法發送會話緩存限制器 - 已在第2行test4 \ classes \ Login.php中發送(在test4 \ index.php:311處開始輸出)的頭文件' –

+0

您是否在其他地方使用會話在你的文件? – Jer

+0

我剛剛檢查過,classes/Login.php中的一個是唯一的session_start –

3

session_start()函數調用頂部。

<?php 
session_start(); 
相關問題