Написал (передрал) простейшую гостевую книгу.
В ней вставил вот это
header("Location: $_SERVER[REQUEST_URI]");
exit;
Чтобы данные перепосылались и при обновлении страницы запись не дублировалась (так учат на курсе специалист).
Сама по себе отдельным файлом гостевая работает. Но включая ей в сайт пишет
Warning: Cannot modify header information - headers already sent by (output started at D:\PHP\ikebastuz_site\index.php:18) in D:\PHP\ikebastuz_site\gb.php on line 9
Вот код гостевухи. Он include'ом вставляется в index.php
<?php
define("USERS_LOG","users.log");
if($_SERVER["REQUEST_METHOD"] == "POST"){
$fname = trim(strip_tags($_POST['fname']));
$email = trim(strip_tags($_POST['email']));
$comm = trim(strip_tags($_POST['comm']));
$user = "$fname($email): $comm\n";
file_put_contents(USERS_LOG, $user, FILE_APPEND);
header("Location: $_SERVER[REQUEST_URI]");
exit;
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>ТЕСТ</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<br />
<form action="<?php echo $_SERVER[REQUEST_URI]; ?>" method="POST">
<h1>Заполните форму</h1>
<p>Имя: <input type="text" name="fname" /></p>
<p>E-mail: <input type="text" name="email" /></p>
<p>Комментарий: <input type="text" name="comm" /></p>
<br />
<input type="submit" value="Отправить!" />
</form>
<?php
if(file_exists(USERS_LOG)){
$users = file(USERS_LOG);
if(is_array($users)){
$users = array_reverse($users);
echo '<ol>';
foreach($users as $value){
echo '<li><p class=color1>'.$value.'</p></li>';
}
echo '</ol>';
}
}
?>
</body>
</html>
18-я строка index.php:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Вот. у меня в связи с этим ступор. подскажите как это подправить. спасибо.
Спустя 23 минуты (13.08.2012 - 07:16) killer8080 написал(а):
Заголовки нельзя отправлять, после того как начался вывод контента.
Спустя 8 минут, 14 секунд (13.08.2012 - 07:24) ikebastuz написал(а):
И никак не сделать это по другому?
Спустя 5 минут, 28 секунд (13.08.2012 - 07:29) killer8080 написал(а):
ikebastuz
а тебя не смущает, что твой код выдает готовый html код, вместе с тегами html, head, body и т.д. и тупо вставляется в другую страницу? Что по твоему браузер должен с ним делать? Нужно выдавать валидный html код.
UPD
А заголовки нельзя посылать после начала вывода контента, если только не включена буферизация. В твоем случае нужно пересматривать всю логику приложения.
а тебя не смущает, что твой код выдает готовый html код, вместе с тегами html, head, body и т.д. и тупо вставляется в другую страницу? Что по твоему браузер должен с ним делать? Нужно выдавать валидный html код.
UPD
А заголовки нельзя посылать после начала вывода контента, если только не включена буферизация. В твоем случае нужно пересматривать всю логику приложения.