2013-11-23 6 views
1

немного длинный вопрос. Недавно я перевел свой сайт Dev на веб-сервер для дальнейшего тестирования .. и он работал на 100% отлично до перехода. Большинство функций работают, за исключением того, что связано с заголовками.Проблемы с PHP заголовком/сеансом

Я добавил ob_start/flush ко всем местам, где я использую заголовки .. и я проверил, что я вызывал session_start в начале всех страниц (если не задано). Играл вокруг с много

things :/ But I get 1000 errors. 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/sites/p/******/public_html/index.php:3) in /var/sites/p/*******/public_html/index.php on line 4 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/sites/p/party******/public_html/index.php:3) in /var/sites/p/*******/public_html/index.php on line 4 
Debug active 

И мой index.php (я пытался всячески) =

<!DOCTYPE html> 
<html lang="en"> 
<?php if (!isset($_SESSION)) { 
    session_start(); 
    } 
    ?> 
<?php include ('lan-config.php')?> 
<?php include (ABSPATH. 'lan-header.php') ?> 
<?php 
    ?> 
    <body> 

Я проверил, даже начинается ли сеанс, и ничего не происходит. Не говоря уже о том, что мой скрипт работает и устанавливает все переменные $ _Session, а затем обновляется, они исчезают.

Любые идеи? Я проверил, что я отправлял в заголовке/конфигурации, и я даже не использовать «заголовок Location» Д д

:)

ответ

0

Поскольку сообщение об ошибке говорит вам, есть уже выход перед вызовом session_start. Поскольку эта функция изменяет информацию заголовка, вы не можете делать какие-либо результаты раньше. Посмотрите на this awesome answer, чтобы понять, почему.

Таким образом, изменить это:

<!DOCTYPE html> 
<html lang="en"> 
<?php if (!isset($_SESSION)) { 
    session_start(); 
    } 
    ?> 
<?php include ('lan-config.php')?> 
<?php include (ABSPATH. 'lan-header.php') ?> 
<?php 
    ?> 
    <body> 

Для этого

<?php 
if (!isset($_SESSION)) { 
    session_start(); 
    } 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<?php include ('lan-config.php')?> 
<?php include (ABSPATH. 'lan-header.php') ?> 
<?php 
    ?> 
    <body> 

Возможно, вам нужно будет включить lan-config.php и lan-header.php до того, как DOCTYPE HTML теги тоже, это зависит от того, что вы делаете в этих файлах ,

+0

Как босс, последний вопрос. Любая идея, почему сеанс не переносится через страницы? Например. Мой скрипт входа в систему. Меня регистрирует (100% дает мне вывод и сохраняет все в сеансе), а затем я возвращаюсь на домашнюю страницу, а сеанс имеет «unset» –

+0

. Каждая страница должна иметь session_start для выполнения $ _SESSION var, если определенная страница не запускает session_start, тогда переменная $ _SESSION не задана. Поэтому вам нужно вызвать session_start(); каждый раз, когда вы используете $ _SESSION var. Почему невозможно переносить страницы? например, есть гонка, и 1 автомобиль уже начал бегать, пока игра еще не началась, как можно начать игру, если ее уже запустили? – daison12006013

+0

Да, вы не должны делать 'if (! Isset ($ _ SESSION)) {' test. 'session_start' не только создает новый сеанс, но и возобновляет его. – OlivierH