Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Cannot modify header information
 
 автор: Demon_gms   (05.11.2009 в 21:33)   письмо автору
1.3 Кб
 
 

Товарищи помогите!!Ну не как мне не справиться с этой проблемой.Сделал простенький скрипт для ГОСТЕВОЙ КНИГИ -"ИМЯ ПОЛЬЗОВАТЕЛЯ_ЕГО МЫСЛИ".Запускаю и выдает ошибку:Warning: Cannot modify header information - headers already sent by (output started at Z:\home\guestbook.ru\www\message.php:11) in Z:\home\guestbook.ru\www\message.php on line 59.....Все сайты облазил,менял кодировку, вносил изменения в php.ini-output_buffering = Off.Ну никакак.При изменении output_buffering = Off на любое значение форма просто не работает,т.е ошибку исчезает но текст не выводится.Я ПХП тока учусь.Поможите!!!ВОт мой листинг:

  Ответить  
 
 автор: Саня   (05.11.2009 в 21:37)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 21:33)
 

http://www.phpfaq.ru/headers
Почему поиском не пользуетесь?

  Ответить  
 
 автор: neadekvat   (05.11.2009 в 21:38)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 21:33)
 

Ссылка выше.

  Ответить  
 
 автор: Demon_gms   (05.11.2009 в 21:42)   письмо автору
 
   для: neadekvat   (05.11.2009 в 21:38)
 

Извините.Очень много просмотрел различных мнений на счет моей проблемы.Не думал что на мой вопрос так быстро ответят.Сейчас же посмотрю Вашу ссылку.

  Ответить  
 
 автор: neadekvat   (05.11.2009 в 21:43)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 21:42)
 

Ссылку дал Саня.
Посмотрите, полезно

  Ответить  
 
 автор: neadekvat   (05.11.2009 в 21:43)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 21:42)
 

.

  Ответить  
 
 автор: winflip   (05.11.2009 в 21:45)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 21:42)
 

Не парьтесь. В общем вы отправляете заголовки после вывода какого-то текста. А заголовки можно отправлять только до первого вывода чего-либо. Хотя бы поиском по форуму воспользовались. Этот вопрос раз 10 точно был

  Ответить  
 
 автор: Demon_gms   (05.11.2009 в 22:03)   письмо автору
 
   для: winflip   (05.11.2009 в 21:45)
 

Я делаю все что там написано и разными блокнотами открываю,и перекинул header('location:book.php'); в начало.пока ничего не помогает.

  Ответить  
 
 автор: neadekvat   (05.11.2009 в 22:18)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 22:03)
 

Не должно быть даже пробелов перед первым объявлением началы скрипта, то есть перед <?php

  Ответить  
 
 автор: Demon_gms   (05.11.2009 в 22:37)   письмо автору
 
   для: neadekvat   (05.11.2009 в 22:18)
 

Да нет пробелов нет.открывал в разных блокнотах,NOTEPAD2,Akelpad,встроенным блокнотов,Dreamweaver ничего не помогает.

  Ответить  
 
 автор: neadekvat   (05.11.2009 в 22:38)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 22:37)
 

Покажите код, который у вас получился

  Ответить  
 
 автор: Demon_gms   (05.11.2009 в 22:39)   письмо автору
 
   для: neadekvat   (05.11.2009 в 22:38)
 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<title>Гостевая книга</title>
</head>
<body><?php
if (isset($_POST['okbutton']))
{
if ($_POST['name_of_guest']=='')
exit(" ! <a href='book.php'></a>");
if ($_POST['message_of_guest']=='')
{
//
echo "Введите текст сообщения! <a href='book.php'> </a>";
exit;
}
//
$name_of_guest=htmlspecialchars($_POST["name_of_guest"]);
//
$message_of_guest=htmlspecialchars($_POST["message_of_guest"]);
if (filesize("gost.txt")>0)
$first_message=FALSE;
else
$first_message=TRUE;
// gost.txt
//
$f=fopen("gost.txt","at") or die(" ");
//
flock($f,2);
// "---------"
// \n
if ($first_message==TRUE)
fputs($f,"-----------\n");
else
fputs($f,"\n-----------\n");
// ip
fputs($f,$_SERVER['REMOTE_ADDR']."\n");
//
fputs($f,date('d.m.y')."\n");
//
fputs($f,$name_of_guest."\n");
//
fputs($f,$message_of_guest);
//
flock($f,3);
//
fclose($f);
}
// book.php
header('location:book.php');?>
</body>
</html>

  Ответить  
 
 автор: Demon_gms   (05.11.2009 в 22:42)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 22:39)
 

Ошибку пишет в Z:\home\guestbook.ru\www\message.php:7)

  Ответить  
 
 автор: sim5   (05.11.2009 в 22:43)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 22:39)
 

У вас перед передачей заголовка, в браузер отдается огромный HTML-блок, а вы говорите нет ничего.

  Ответить  
 
 автор: winflip   (05.11.2009 в 22:43)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 22:39)
 

А это по-вашему что?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" dir="ltr"> 
<head> 
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251"> 
<title>Гостевая книга</title> 
</head>
<body>

  Ответить  
 
 автор: neadekvat   (05.11.2009 в 22:43)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 22:39)
 

Нет, вы не поняли.
Хтмл разметка - это уже текст, а заголовки должны стоять ДО любого текста

  Ответить  
 
 автор: Demon_gms   (05.11.2009 в 22:46)   письмо автору
 
   для: neadekvat   (05.11.2009 в 22:43)
 

ДА конечно я удалял этот заголовок.После удления заголовка сообщение пропдает,но сообщение от гостя не отображается.Значит проблема в коде?Может файл gost.txt не правильно открыт.В общем спасиб за помощь.

  Ответить  
 
 автор: sim5   (05.11.2009 в 22:51)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 22:46)
 

Вы сперва проверяйте скриптом принятые данные, и если необходимо, делайте перенаправление. А уже затем отдавайте в браузер и результат обработки принятых данных и само HTML содержание. Тогда все будет ОК. Кстати, не стоит писать если а==TRUE, достаточно написать if(a), и т.п..

  Ответить  
 
 автор: neadekvat   (05.11.2009 в 22:51)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 22:46)
 

Работоспособность вашего кода - это уже другой вопрос.

Интересно, а как вы поймете, что у вас неправильно открыто, если в этом случаи будет это:
or die(" ");
Замените на
or die("Не смог открыть файл");
И вообще, делайте код так, чтобы он в любом случаи что-нибудь да выводил (естесственно, подходящее по ситуации. Нет сообщений - пусть это и напишет. Не открыт файл - пусть говорит об неоткрытом файле), тогда вы будете знать, где искать ошибки.

  Ответить  
 
 автор: Demon_gms   (05.11.2009 в 23:05)   письмо автору
 
   для: neadekvat   (05.11.2009 в 22:51)
 

Прошу прощения за не скромность а как сделать "так, чтобы он в любом случаи что-нибудь да выводил (естесственно, подходящее по ситуации. Нет сообщений - пусть это и напишет. Не открыт файл - пусть говорит об неоткрытом файле),"

  Ответить  
 
 автор: winflip   (06.11.2009 в 09:46)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 23:05)
 

Видно,что этот код писали не Вы. Это строка:
$f=fopen("gost.txt","at") or die(" ");

Означает: открыть файл gost.txt или вывести сообщение. Если файл не откроеся, то скрипт перестанет работать и выдаст исключительную ситуацию с текстом, который находится в die(). Он у вас пустой поэтому ничего не выводит.

  Ответить  
 
 автор: neadekvat   (06.11.2009 в 13:04)   письмо автору
 
   для: Demon_gms   (05.11.2009 в 23:05)
 

В местах, где что-то выполняется только при положительном условии, а при отрицательном надо знать, что условие не выполнено, писать НЕ так:
если (что-то) то (так).
if () {}
А так:
если (что-то) то (так) если нет то ("Сообщение").
if () {} else echo "Сообщение";

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования