2014-10-03 5 views
-2

У меня есть 3 типа форм на моем веб-сайте, и все работает нормально до одного дня. Я не знаю, что произошло, но я получаю ошибки сессии; под этим я имею в виду, я получаю сообщение об ошибке, когда у меня есть PHP скрипт, который включает в сессионном тег внутри него, например, это находится на моем старте по <html> тега:Почему я получаю сообщение об ошибке с тем же кодом?

<?php 

// Make the page validate 
ini_set('session.use_trans_sid', '0'); 

// Create a random string, leaving out 'o' to avoid confusion with '0' 
$char = strtoupper(substr(str_shuffle('abcdefghjkmnpqrstuvwxyz'), 0, 4)); 

// Concatenate the random string onto the random numbers 
// The font 'Anorexia' doesn't have a character for '8', so the numbers will only go up to 7 
// '0' is left out to avoid confusion with 'O' 
$str = rand(1, 7) . rand(1, 7) . $char; 

// Begin the session 
session_start(); 

// Set the session contents 
$_SESSION['captcha_id'] = $str; 

?> 

Когда я проверить это на моем сайте, я получаю:

Внимание: session_start(): не удается отправить ограничитель сессии кэш - заголовки уже прислал (выход начался в /home4/domain/public_html/adres/contact.php:2) в/home4/домен/public_html/Adres/contact.php on line 16

Exa ctly часть, где находится session_start()? Такая же структура кода работала раньше - что случилось?

+1

Ошибка говорит вам, что 'output [was] запущен в/home4/domain/public_html/adres/contact.php' в строке 2. Я бы рекомендовал запустить файл через что-то, что покажет вам необработанные байты, например, инструмент * nix 'xxd (1)'; у вас, вероятно, есть непечатаемые символы в голове документа. – TML

ответ

2

Проверьте, есть ли у вас пробелы или символы новой строки перед началом работы. <?php тег.

+0

Там это мнение здесь, что очень краткое (одно предложение) ответы обычно лучше в комментариях. – halfer

+0

ОК, спасибо. Я думал, что в этом случае мой ответ является обычным решением этой проблемы. – danmullen

+0

Комментирование было бы обычным подходом для ответов на дублирующие вопросы, я должен подумать. Я не занимаюсь ничем, но короткие ответы находятся под угрозой. – halfer

1

заголовки уже прислал»означает, что ваш PHP скрипт уже послал заголовки HTTP, и как таковой он не может вносить изменения в них сейчас.

Убедитесь, что вы не посылаете содержание до вызова session_start. Лучше но сделайте session_start первым, что вы делаете в своем PHP-файле (так что поставьте его в абсолютном начале, перед всем HTML и т. д.).

+0

Устройство цитаты полезно, когда вы цитируете других людей - если вы просто пишете свой собственный материал, лучше всего без него. – halfer

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