header() снова
1.
Apeccc (23.01.2013 / 14:09)
Доброго времени.
Что-то я никак не пойму.
Задача:
Вывести шапку в каждый файл, + верхнее меню.
Файл регистрации проверяет наличие ошибок.
function head(){
echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" href="/styles/standart/style.css" type="text/css">
<title>Тест</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
</head><body>
<div class="nav">
<a href="/">Главная</a> :: <a href="/">Ссылка 1</a> :: <a href="/">Ссылка 2</a>
</div>
';
}
Выше функция шапки.
Ниже - код из регистрации:
<?php
include('core/db.php');
include('core/settings.php');
include('core/style.php');
include('core/func.php');
head();
auth();
if (isset($_GET['go']) && $_GET['go']=='reg'){
if($login == '' or $login == NULL or strlen($login) > 20){
header ("Location: reg.php");
exit;
}...
При ошибке ругается на тот факт, что header уже отправлен в foot();
Ваши советы?
2.
andpov (23.01.2013 / 14:23)
header(Location: ../index.php); //куда отправляем пользователя
exit();
наверно так
3.
Изнаур (23.01.2013 / 14:31)
<?php
include('core/db.php');
include('core/settings.php');
include('core/style.php');
include('core/func.php');
auth();
if (isset($_GET['go']) && $_GET['go']=='reg'){
if($login == '' or $login == NULL or strlen($login) > 20){
header ("Location: reg.php");
exit;
}
else
{
head()
//ваш код
}
?>
4.
Кевин Митник (23.01.2013 / 14:32)
если я правильно понял, то в скрипте не включена буферизация, функция ob_start(). А если так, то если что-то попало в вывод ДО функции header(), то будет ошибка. Лечиться буферизацией: в начале скрипта - ob_start(); в конце ob_end_flush();
5.
Алексей (23.01.2013 / 14:59)
4.
Кевин Митник_HHTeam, ob_start() это не лечение а костыль.
6.
Apeccc (23.01.2013 / 16:51)
3.
Iznaur95, точно, сам не додумался.
Большое спасибо.
7.
Кевин Митник (23.01.2013 / 17:33)
#5, да? никогда не думал о буферизации, как о костыле. Много чего полезного можно с её помощью сделать. Интересно от тебя это слышать. Ты же вроде как знающий.
P.S в данном случае, #3 правильно написал, то есть вывод шапки уже после header();
8.
Алексей (23.01.2013 / 18:21)
7.
Кевин Митник_HHTeam, а ты сам подумай зачем здесь буферизация? вон в посте #5 уже написали без нее.
9.
mozzzg (07.06.2013 / 09:17)
В куче скриптов дублируют кодировку в хеадере и тегом meta 2 раза.
header("Content-type:text/html; charset=utf-8");
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Увидел инфу, что если кодировка есть в заголовке документа, то в других местах уже не важно что написано. Если в мета написать другую, то документ не изменится.
URL:
https://visavi.net/topics/36352