2010-05-05 3 views
-1

я использовал образец нашел на сайте и применил его к моему коду:PHP session_start() ошибка

<?php 
session_start(); 
if (isset($_REQUEST["email"])) 
{ 
    $_SESSION["name"] = true; 
    $host = $_SERVER["HTTP_HOST"]; 
    $path = dirname($_SERVER["PHP_SELF"]); 
    $sid = session_name() . "=" . session_id(); 
    header("Location: index.php?$sid"); 
    exit; 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
... 
... 
and rest of the html code 

Когда я открываю эту страницу, я получил сообщение об ошибке:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /data/server/user/directory/sub-directory/login.php:1) in /data/server/user/directory/sub-directory/login.php on line 2 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/server/user/directory/sub-directory/login.php:1) in /data/server/user/directory/sub-directory/login.php on line 2 

I посмотрел вокруг, чтобы решить эту проблему, и увидел несколько сообщений об этом на этом сайте, но я просто не могу получить хорошее сцепление с этим ... не могу найти ответ.

Пожалуйста, помогите.

Спасибо.

+0

Возможный дубликат http://stackoverflow.com/questions/1183726/headers-already-sent-in-php, http://stackoverflow.com/questions/1891969/php-headers-already-sent-error, http://stackoverflow.com/questions/2121473/why-am-i-getting-this-php-session-start-error, http://stackoverflow.com/questions/2346827/im-getting-a-php- предупреждение-не может-изменить-header-information-but-i-have-my-includes – outis

+0

Это должен быть самый заданный вопрос на SO – Galen

+0

Вы просто заставляли меня делать двойной прием. – outis

ответ

0

NotePad, как известно, вставляет спецификацию в начале текстового файла. При сохранении файла убедитесь, что вы не выбираете Unicode или UTF-8 в качестве кодировки.

Вы можете проверить, вставлена ​​ли спецификация, сделав шестнадцатеричный дамп файла. Вы можете использовать эту утилиту, чтобы сделать это,

http://www.richpasco.org/utilities/hexdump.html

Если не начать с 0x3C, вы получили BOM.

+0

За все эти годы я никогда не замечал об этой кодировке Я только узнал и сохранил его как ANSI, и я больше не получаю это предупреждение. Спасибо, что помогли этой новичке. – tooepic

0

Проверьте наличие пробела, новой строки или любых других символов перед <?php. Любой выход перед session_start() приведет к этой ошибке.

Ошибка указывает, что вывод находится в строке 1 login.php, а session_start() - в строке 2. Таким образом, это, вероятно, пробел или какой-то другой символ.

+0

я сделал. этот скрипт php является единственным скриптом в этом html-файле. я даже пытался избавиться от лишних пробелов перед «$ _SESSION», «$ host», «$ path», $ sid »,« header »и« exit; »... и он все еще не – tooepic

+0

Кроме того, нет места до или после tooepic

+0

И если вы все еще не находите никаких средств, вы можете увидеть, может быть, это проблема с спецификацией Юникода. Проверьте настройки кодировки текстовый редактор использует и, если возможно, выбирает кодировку без спецификации. Вот краткое объяснение этой и других проблем: http: //bytes.com/topic/php/insights/876324-php-common-newbie-pitfalls-1 -headers-уже отправлено – grossvogel