|
 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 на любое значение форма просто не работает,т.е ошибку исчезает но текст не выводится.Я ПХП тока учусь.Поможите!!!ВОт мой листинг: | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 21:33)
| | http://www.phpfaq.ru/headers
Почему поиском не пользуетесь? | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 21:33)
| | Ссылка выше. | |
|
|
|
|
|
|
|
для: neadekvat
(05.11.2009 в 21:38)
| | Извините.Очень много просмотрел различных мнений на счет моей проблемы.Не думал что на мой вопрос так быстро ответят.Сейчас же посмотрю Вашу ссылку. | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 21:42)
| | Ссылку дал Саня.
Посмотрите, полезно | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 21:42)
| | . | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 21:42)
| | Не парьтесь. В общем вы отправляете заголовки после вывода какого-то текста. А заголовки можно отправлять только до первого вывода чего-либо. Хотя бы поиском по форуму воспользовались. Этот вопрос раз 10 точно был | |
|
|
|
|
|
|
|
для: winflip
(05.11.2009 в 21:45)
| | Я делаю все что там написано и разными блокнотами открываю,и перекинул header('location:book.php'); в начало.пока ничего не помогает. | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 22:03)
| | Не должно быть даже пробелов перед первым объявлением началы скрипта, то есть перед <?php | |
|
|
|
|
|
|
|
для: neadekvat
(05.11.2009 в 22:18)
| | Да нет пробелов нет.открывал в разных блокнотах,NOTEPAD2,Akelpad,встроенным блокнотов,Dreamweaver ничего не помогает. | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 22:37)
| | Покажите код, который у вас получился | |
|
|
|
|
|
|
|
для: 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:39)
| | Ошибку пишет в Z:\home\guestbook.ru\www\message.php:7) | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 22:39)
| | У вас перед передачей заголовка, в браузер отдается огромный HTML-блок, а вы говорите нет ничего. | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 22:39)
| | Нет, вы не поняли.
Хтмл разметка - это уже текст, а заголовки должны стоять ДО любого текста | |
|
|
|
|
|
|
|
для: neadekvat
(05.11.2009 в 22:43)
| | ДА конечно я удалял этот заголовок.После удления заголовка сообщение пропдает,но сообщение от гостя не отображается.Значит проблема в коде?Может файл gost.txt не правильно открыт.В общем спасиб за помощь. | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 22:46)
| | Вы сперва проверяйте скриптом принятые данные, и если необходимо, делайте перенаправление. А уже затем отдавайте в браузер и результат обработки принятых данных и само HTML содержание. Тогда все будет ОК. Кстати, не стоит писать если а==TRUE, достаточно написать if(a), и т.п.. | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 22:46)
| | Работоспособность вашего кода - это уже другой вопрос.
Интересно, а как вы поймете, что у вас неправильно открыто, если в этом случаи будет это:
or die(" ");
Замените на
or die("Не смог открыть файл");
И вообще, делайте код так, чтобы он в любом случаи что-нибудь да выводил (естесственно, подходящее по ситуации. Нет сообщений - пусть это и напишет. Не открыт файл - пусть говорит об неоткрытом файле), тогда вы будете знать, где искать ошибки. | |
|
|
|
|
|
|
|
для: neadekvat
(05.11.2009 в 22:51)
| | Прошу прощения за не скромность а как сделать "так, чтобы он в любом случаи что-нибудь да выводил (естесственно, подходящее по ситуации. Нет сообщений - пусть это и напишет. Не открыт файл - пусть говорит об неоткрытом файле)," | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 23:05)
| | Видно,что этот код писали не Вы. Это строка:
$f=fopen("gost.txt","at") or die(" ");
|
Означает: открыть файл gost.txt или вывести сообщение. Если файл не откроеся, то скрипт перестанет работать и выдаст исключительную ситуацию с текстом, который находится в die(). Он у вас пустой поэтому ничего не выводит. | |
|
|
|
|
|
|
|
для: Demon_gms
(05.11.2009 в 23:05)
| | В местах, где что-то выполняется только при положительном условии, а при отрицательном надо знать, что условие не выполнено, писать НЕ так:
если (что-то) то (так).
if () {}
А так:
если (что-то) то (так) если нет то ("Сообщение").
if () {} else echo "Сообщение"; | |
|
|
|