[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Триклятый header!!!
slavikx3m
Суть проблемы:
Warning: Cannot modify header information - headers already sent by (output started at /home/.../search.php:114) in /home/.../basket.php on line 7

Старая тема, и прочитал много по ней! Но у меня всё работало, ВСЁ КАК НАДО (на серваке!!!), без единой ошибки ПОКА....
не заменил div'ную верстку на табличную(только наполнение index.php, кодировку не трогал), и вот тут появилось это сообщение, НИЧЕГО НЕ МЕНЯЛ ТОЛЬКО НАПОЛНЕНИЕ index.php файла:

было:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta
name="description" content="">
<meta
name="keywords" content="">
<title></title>
<link
rel=stylesheet type=text/css href="style.css">
</head>

<body>

<div
class="mainseach">
<?php
include "mainseach.php"; ?>
</div>
<div
class="basket">
<?php
include "basket.php"; ?>
</div>

<?php
include "search.php"; ?>

</body>
</html>



стало (с ошибкой):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta
name="description" content="">
<meta
name="keywords" content="">
<title></title>
<link
rel=stylesheet type=text/css href="style.css">
<link
rel=stylesheet type=text/css href="styletable.css">
</head>

<body>

<table
class="bgtable" align="center" valign="top" cellspacing="0" cellpadding="0">
<td
class="bgtd" align="center" valign="top">


<table
class="firsttable" align="center" cellspacing="0" cellpadding="0">
<td
class="firsttd"></td>
</table>

<table
class="secondtable" align="center" cellspacing="0" cellpadding="0">
<td
class="navigationtd" align="center" valign="top">
<?php
include "mainseach.php"; ?>
</td>
<td
class="maincentertd" align="center" valign="top">
<table
class="maincentertable" align="center" valign="top" cellspacing="0" cellpadding="0">
<td
class="fullmaincentertd" align="center" valign="top">
<?php
include "search.php"; ?>
</td>
</table>
</td>
<td
class="baskettd" align="center" valign="top">
<?php
include "basket.php"; ?>
</td>
</table>


</td>
</table>
</body>
</html>




Люди помогите пожалуйста, может кто знает, в чём трабл, что ему надо. Переходить на divы не очень хочется!!!




Спустя 9 минут, 44 секунды (7.11.2010 - 12:23) Slays написал(а):
причем тут твоя верстка, покажи где header стоит

хотя ладно, как я понял у тебя хеадеры в инклудах, ошибка тут в обоих случаях должна выскакивать, ибо header должен стоять до любого вывода данных в поток, в твоем случае это html-код, какая бы тут верстка не была.
Возможно на сервере просто в игнор пускают все ошибки и ты счастлив.

Вынеси хеадеры до html-кода в основной файл, один фиг ты к нему инклудишь.

Спустя 25 минут, 59 секунд (7.11.2010 - 12:49) slavikx3m написал(а):
Заостряю внимание Ваше на том что работало всё как надо, ни одного намека на ошибку с дивами, с таблицами ошибка появилась и перестала страница обновляться (выполняться хайдер)

Вы предлогаете мне хайдер вынести в отдельный php и инклюдить его в нужное мне место скрипта? Я Вас правильно понял?

Спустя 2 минуты, 43 секунды (7.11.2010 - 12:52) twin написал(а):
То, что где то там работало - совершенно не показатель и не имеет ровно никакого значения. Забудь.
Нужно просто сделать все правильно. На крайний случай использовать буферизацию.

Спустя 2 минуты, 54 секунды (7.11.2010 - 12:55) slavikx3m написал(а):
Как это не показатель?

при одном условии работает - забудь? при втором нет - ответ не найден, забудь?

Спустя 4 минуты, 7 секунд (7.11.2010 - 12:59) twin написал(а):
Все дело в том, что сказок не бывает. Если работает в одном месте, а не работает в другом, это никакая не мистика. Это кривой скрипт просто.

У тебя вывод идет перед отдачей заголовков - это однозначно. На это указывает ошибка.

Ни один уважающий себя нормально настроенный сервер не будет корректно его обрабатывать.

То, что скрипт работал где то на кривом сервере, не делает его рабочим.
Исправлять ошибку надо, либо использовать буферизацию. Конкретнее сказать не могу, ибо не вижу код.

Спустя 24 секунды (7.11.2010 - 12:59) Slays написал(а):
если сделано изначально так, что ошибка просто ОБЯЗАНА возникнуть, но по неизвестным причинам не возникала, не говорит о правильности решения.
Я предлагаю просто вынести хеадеры из инклудов в основной файл


<?php
header('Content-type: text/html; charset=utf-8');
header(...);
// и тд
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta
name="description" content="">
...

Спустя 3 минуты, 52 секунды (7.11.2010 - 13:03) twin написал(а):
Slays
Вот этот код тоже кривой. Перед доктайпом не должно быть ничего, даже непечатных символов. Иначе IE криво будет работать.

Спустя 1 минута, 22 секунды (7.11.2010 - 13:04) Slays написал(а):
фигасе жесть user posted image
буду знать =)

кроме буферизации никак чтоли user posted image

Спустя 6 минут, 28 секунд (7.11.2010 - 13:11) slavikx3m написал(а):
Цитата (Slays @ 7.11.2010 - 09:59)
если сделано изначально так, что ошибка просто ОБЯЗАНА возникнуть, но по неизвестным причинам не возникала, не говорит о правильности решения.
Я предлагаю просто вынести хеадеры из инклудов в основной файл

<pre class="sh_sourceCode" rel="html">
<span class="sh_keyword"><?php</span>
<span class="sh_function">header</span><span class="sh_symbol">(</span><span class="sh_string">'Content-type: text/html; charset=utf-8'</span><span class="sh_symbol">);</span>
<span class="sh_function">header</span><span class="sh_symbol">(...);</span>
<span class="sh_comment">// и тд</span>
<span class="sh_keyword">?></span>

<span class="sh_doctype"><!DOCTYPE</span> <span class="sh_att">html PUBLIC</span> <span class="sh_string">"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span><span class="sh_doctype">></span>
<span class="sh_keyword"><html>
<head>
      <meta</span> <span class="sh_att">http-equiv</span><span class="sh_symbol">=</span><span class="sh_string">"Content-Type"</span> <span class="sh_att">content</span><span class="sh_symbol">=</span><span class="sh_string">"text/html; charset=windows-1251"</span><span class="sh_keyword">>
      <meta</span> <span class="sh_att">name</span><span class="sh_symbol">=</span><span class="sh_string">"description"</span> <span class="sh_att">content</span><span class="sh_symbol">=</span><span class="sh_string">""</span><span class="sh_keyword">></span>
...
</pre>

Прости, а как мне вызывать хайдер в нужное время, кроме того хайдер у меня состоит из 5 переменных (а будет ещё больше, почти уверен, хоть и не на много) вида:

http://......../index.php?minprice=0&maxprice=1000000000&country=&type=&page=4

мне его в функцию загонять, так можно?:


<?php
session_start();
$directz=$_SESSION['directz'];
function direct () {
header("Location: $directz");
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<
meta name="description" content="">
...



а потом в ЛЮБОМ месте кода на Любой странице вызывать её:

direct ();


Я правильно тебя понял?

Спустя 5 минут, 32 секунды (7.11.2010 - 13:16) twin написал(а):
Не пойдет.

Спустя 6 минут, 19 секунд (7.11.2010 - 13:23) slavikx3m написал(а):
Hol's der Teufel!

Спустя 56 секунд (7.11.2010 - 13:24) slavikx3m написал(а):
а как пойдет?

Спустя 8 минут, 53 секунды (7.11.2010 - 13:33) twin написал(а):
Я же сказал - только буферизация может спасти положение.

Спустя 29 секунд (7.11.2010 - 13:33) inpost написал(а):
В начала обработку данных, потом вывод данных.
Запуск функции должен быть до вывода информации на экран.

Twin: поможет ещё перенос хостинга на Windows, там заголовки отправляются хоть даже в конце вывода информации =)

Спустя 54 минуты, 58 секунд (7.11.2010 - 14:28) slavikx3m написал(а):
Цитата (inpost @ 7.11.2010 - 10:33)
В начала обработку данных, потом вывод данных.
Запуск функции должен быть до вывода информации на экран.

Twin: поможет ещё перенос хостинга на Windows, там заголовки отправляются хоть даже в конце вывода информации =)

Хорошо тогда код страницы корзины...

<?php
session_start();
include "db.conf.php";

$directz=$_SESSION['directz'];
$qwertypost = $_POST['qwerty'];
$arr=$_SESSION['mas'];
if (!$i) {$i="0";}

if (isset($_SESSION['totalprice'])) {$totalprice=$_SESSION['totalprice'];}
else {$totalprice = "0";}

if (isset($_SESSION['i'])) {$i=$_SESSION['i'];}
else {$i = "0";}


if (!isset($qwertypost)) {

if (isset($_POST['numberi'])) {
$numberi = $_POST['numberi'];
$erazeprice = $_POST['erazeprice'];
$totalprice= $totalprice-$erazeprice;
unset($arr[$numberi]);
unset($_POST[numberi]);
unset($_POST[erazeprice]);
$_SESSION['mas']=$arr;
$_SESSION['totalprice']=$totalprice;
header("Location: $directz");
}


if (isset($arr)) {
if ($totalprice>0) {echo "+Общая стоимость € $totalprice,-";}
foreach ($arr as $value) {
echo "<div class='blockarray'>";
echo $value;
echo "+<br>";
echo "</div>";
}
}


if (!isset($value)) {
echo "(+Ваша корзина пуста)";
}
}


else {


$basketseach = mysql_query("select * from news where id='$qwertypost'");

while ( $row = mysql_fetch_assoc ( $basketseach )) {
$aq = $row['id'];
$fq = $row['price'];
$hq = $row['type'];
$text="<a href='http://tovart.ru/sql/formhead.php?id=".$aq."' class='basketleftblock' target='_blank'><span class='lot'>Лот</span> $aq $hq <span class='lot'>Цена

</span>€
$fq,-</a>";
}

$totalprice=$totalprice+$fq;
$txet="<div class='removblock'><form method='post'><input type='hidden' name='numberi' value='".$i."'><input type='hidden' name='erazeprice' value='".$fq."'><input

class='remov' type='submit' value=''></form></div>"
;
$arr[$i]="$text $txet";
$i=$i+1;

$_SESSION['mas']=$arr;
$_SESSION['i']=$i;
$_SESSION['totalprice']=$totalprice;
unset($_POST[qwerty]);
$qwertypost = $_POST['qwerty'];
header("Location: $directz");
}

?>



никакого echo (вывода) перед header нет, только обработчики....
Но так всё равно не АЙС, таже ошибка!!!

КАК БЫТЬ ЛЮДИ??!!!


Спустя 4 минуты, 49 секунд (7.11.2010 - 14:33) kovaldm написал(а):
В файле корзины нет, а до него разве нет вывода?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta
name="description" content="">
<meta
name="keywords" content="">
<title></title>
<link
rel=stylesheet type=text/css href="style.css">
<link
rel=stylesheet type=text/css href="styletable.css">
</head>

<body>

<table
class="bgtable" align="center" valign="top" cellspacing="0" cellpadding="0">
<td
class="bgtd" align="center" valign="top">


<table
class="firsttable" align="center" cellspacing="0" cellpadding="0">
<td
class="firsttd"></td>
</table>

<table
class="secondtable" align="center" cellspacing="0" cellpadding="0">
<td
class="navigationtd" align="center" valign="top">
<?php
include "mainseach.php"; ?>
</td>
<td
class="maincentertd" align="center" valign="top">
<table
class="maincentertable" align="center" valign="top" cellspacing="0" cellpadding="0">
<td
class="fullmaincentertd" align="center" valign="top">
<?php
include "search.php"; ?>
</td>
</table>
</td>
<td
class="baskettd" align="center" valign="top">
<?php
include "basket.php"; ?>

Это все разве не выводится в браузер?

Спустя 3 минуты, 11 секунд (7.11.2010 - 14:36) twin написал(а):
inpost
Цитата
Twin: поможет ещё перенос хостинга на Windows, там заголовки отправляются хоть даже в конце вывода информации =)
Чушь. Не важно винда это или рында. Можно просто прописать для php принудительную буферизацию в .htaccess или php.ini, но этого делать не надь, ибо он потом опять будет бить мобилой в монитор - ранше мол работало, а теперь нет!!!!!

slavikx3m
Ну почему лень почитать то... Все ждете, кто сопельки подотрет. Там же все написано, по ссылке, что я дал.
<?php
ob_start();
session_start();
include "db.conf.php";
.
.
.
.

$qwertypost = $_POST['qwerty'];
header("Location: $directz");
}

ob_flush();

Спустя 6 минут, 14 секунд (7.11.2010 - 14:42) inpost написал(а):
twin
http://phpforum.ru/index.php?showtopic=35896&hl=
Вот там я спрашивал, почему header работает, никто не ответил...
Значит он работает потому что принудительно включена буферизация в php.ini ???

Спустя 1 минута, 39 секунд (7.11.2010 - 14:44) slavikx3m написал(а):
Цитата (twin @ 7.11.2010 - 11:36)
inpost
Цитата
Twin: поможет ещё перенос хостинга на Windows, там заголовки отправляются хоть даже в конце вывода информации =)
Чушь. Не важно винда это или рында. Можно просто прописать для php принудительную буферизацию в .htaccess или php.ini, но этого делать не надь, ибо он потом опять будет бить мобилой в монитор - ранше мол работало, а теперь нет!!!!!

slavikx3m
Ну почему лень почитать то... Все ждете, кто сопельки подотрет. Там же все написано, по ссылке, что я дал.
<?php
ob_start();
session_start();
include "db.conf.php";
.
.
.
.

$qwertypost = $_POST['qwerty'];
header("Location: $directz");
}

ob_flush();

Лапуль, ты только слово буферизация знаешь?

Я же игнарирую тебя, как могу, пора бы осознать что не надо мне помогать, мне ТВОЯ помощь не нужна, иди вышивай...

Спустя 6 минут, 38 секунд (7.11.2010 - 14:51) slavikx3m написал(а):
Цитата (kovaldm @ 7.11.2010 - 11:33)
В файле корзины нет, а до него разве нет вывода?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta
name="description" content="">
<meta
name="keywords" content="">
<title></title>
<link
rel=stylesheet type=text/css href="style.css">
<link
rel=stylesheet type=text/css href="styletable.css">
</head>

<body>

<table
class="bgtable" align="center" valign="top" cellspacing="0" cellpadding="0">
<td
class="bgtd" align="center" valign="top">


<table
class="firsttable" align="center" cellspacing="0" cellpadding="0">
<td
class="firsttd"></td>
</table>

<table
class="secondtable" align="center" cellspacing="0" cellpadding="0">
<td
class="navigationtd" align="center" valign="top">
<?php
include "mainseach.php"; ?>
</td>
<td
class="maincentertd" align="center" valign="top">
<table
class="maincentertable" align="center" valign="top" cellspacing="0" cellpadding="0">
<td
class="fullmaincentertd" align="center" valign="top">
<?php
include "search.php"; ?>
</td>
</table>
</td>
<td
class="baskettd" align="center" valign="top">
<?php
include "basket.php"; ?>

Это все разве не выводится в браузер?

Вы правы, я этого ответа и боялся....

Тогда я просто не могу представить куда запихнуть Хедер, да и потом его как вытаскивать в нужное время, а это время всё равно тогда получается после вывода, как Вы уже сказали, привели пример...

Так как тогда поступить, какова практика синтаксиса в таких случаях, наверняка ведь люди сталкивались с ней и как то решали вопрос, у меня не получилось пока придумать...

Если что, с самого начало:

4 файла: index.php в нём ещё три:условия поиска и кнопочка поиска (выведенная инфа), страница вывода найденного (без комментариев) и корзина (с выводом как же без него)...

Хайдер нужен для того чтобы не задваивалась инфа при обновлениии, ну это я думаю понятно...

Спустя 20 минут, 53 секунды (7.11.2010 - 15:11) kovaldm написал(а):
Как сказал Twin
ob_start()

Спустя 2 минуты, 8 секунд (7.11.2010 - 15:14) inpost написал(а):
slavikx3m
Грубое поведение с уважаемым экспертом. 2 часа отдыха и вышивания. Успокоишься, научишься уважительно относиться к другим людям, возвращайся.
П.С. кривая структура сайта, из-за этого и проблемы такие.

Спустя 30 минут, 7 секунд (7.11.2010 - 15:44) twin написал(а):
inpost
Да не стоило, не хочет как хочет. Пусть дальше головой об стенку колотится, пока не дойдет наконец.
Мне его выпады что шли, что ехали. smile.gif


Спустя 6 минут, 36 секунд (7.11.2010 - 15:50) twin написал(а):
inpost
Цитата

Значит он работает потому что принудительно включена буферизация в php.ini ???

Есть такая директива output_buffering
Если ей поставить On, то буферизация будет осуществляться автоматически.
Тебе в той ветке kirik ответил, я думал вопрос исчерпан.

Только делать этого не рекомендуется. Из-за того, на что сейчас топикстартер наступил и никак не может поверить, что это не комп виноват, а его кривые скрипты.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.