Autor Zpráva
Nailen
Profil
Mám problém s odesíláním hlaviček.

mám kód kde mi fungoval následující příkazy:

header("Refresh: 4; url=$returl");


pak jsem něco zloušel a začlenil si kód s nákupním košíkem. Jen jsem testoval. Je to už déle. Kód používal session. Teď jsem se pokusil vyházet všechen kód s nákupním košíkem a vrátit to do původního stavu. Nějak jsem ale někde něco zapoměl a nefunguje mi to.

Píše mi to následující chybu:

Warning: Cannot modify header information - headers already sent by (output started at W:\www\...\stdhead.php:166) in W:\www\...\register.php on line 362


Poradí mi někdo jak odhalit a lokalizovat problém?

Předem děkuji za jakoukoli odpověď.
habendorf
Profil
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=2111
Nailen
Profil
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=2111

děkuji za snahu. Tohle jsem si našel a dočetl, ale nenašel jsem nikde nic zmiňovaného. Spíše mě zajímal postup jak to najít. Jestli třeba není nějaký příkaz, který dokáže vypsat přímo řádek v konkrétním scriptu.

Můj web se skládá z několika souborů o tisících řádcích. Prohledávat jestli někde není něco vizuelně špatně (prázdný řádek) je nemožné.

Co moc dobře nechápu je to, že nesmí být použit příkaz echo, print. Na stránce se mi objeví menu,... a v hlavní části se mi zobrazí tato chyba. Toto menu je vykresleno na základě příkazů print. To by nemělo být?
habendorf
Profil
Přinejhorším http://cz2.php.net/ob_start.
AM_
Profil
(output started at W:\www\...\stdhead.php:166)
tady máš, kde se ti vypisují výstupní data.
Co moc dobře nechápu je to, že nesmí být použit příkaz echo, print.
v HTTP protokolu jdou nejdřív hlavičky, pak dokument. Proto normálně nemůžeš headery posílat až po výstupu. Řešení je bufferování výstupu (viz habendorfův link) nebo psát kód tak čistě, aby jsi na tenhle problém nenarazil.
keeehi
Profil
Funkce echo a print mohou klidně ve scriptu být, ale musejí být až za header();

soubor by měl vypadat nějak takto:
<?php
$returl = "xxxx";
header("Refresh: 4; url=$returl");
?>
<!DOCTYPE html public ...


Pozor si musíš dávat na MEZERY před "<?php" nesmí tam být ani jedna.
Nailen
Profil
Mezerou je bran I odentrovany radek v kodu?
Nailen
Profil
Mezerou je bran I odentrovany radek v kodu?
Nailen
Profil
Mezerou je bran I odentrovany radek v kodu?
Nailen
Profil
Mezerou je bran I odentrovany radek v kodu?
keeehi
Profil
Mezerou je bran I odentrovany radek v kodu?
V php si entrů udělej kolik chceš, tam to nevadí. V html části to však vadí. Před <?php ... nesmí být žádný znak (mezera, enter, a, b, 9, ...).
Nailen
Profil
OK
Nailen
Profil
Tak jsem vše přepsal do PHP a je najednou po problému :-)

Díky za spolupráci.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0