2016-04-28 3 views
0

Я получаю сообщение об ошибке при попытке настроить систему входа в систему. Я пробовал несколько «решений», но никто из них не работает, например, поставив start_session на вершине всех сценариевПредупреждение: session_start(): Не удается отправить ограничитель кеша сеанса - уже отправленные заголовки (вывод начат с

Предупреждение: session_start(): не удается отправить кэш-ограничитель сеанса - заголовки уже отправлены (выход начался в test4 \ index.php:). в test4 \ classes \ Login.php по строке 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(); 

Line 28 в классах/login.php:

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

     session_start(); // line 28 

Спасибо заранее!

+0

Почему у вас есть открывающий тег php на линии 311? Это означает, что до этого есть некоторые не-php, даже если это только новая строка ... – jeroen

+0

@jeroen На самом деле есть только HTML до строки 311 –

ответ

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, но это, похоже, не работает для меня: 'Warning: session_start(): Не удается отправить ограничитель кеша сеанса - уже отправленные заголовки (вывод запущен в test4 \ index.php: 311) в test4 \ classes \ Login.php в строке 2' –

+0

Используете ли вы сеанс в другом месте в ваших файлах? – Jer

+0

Я только что проверил и один в классах/Login.php является единственным session_start –

3

session_start() вызов функции просто сверху.

<?php 
session_start(); 
Смежные вопросы

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