Autor Zpráva
Anonymní
Profil *
Jistě většina z vás zná hlášku Cannot modify header information - headers already sent by (output started at...

Pročítal jsem si řešení podobných problémů, ale obávám se, že jsem asi příliš natvrdlej a řešení mi nedochází.
Znám příčinu, ale ne a ne přijít na řešení.

Mám stránky, do kterých jsem vložil anketu. Anketa je vložena v buňce tabulky, která se nachází ve spodní části stránky. Celý kód vypisovat nebudu, nejde o nic, co by jste neznali.
Vypíšu alespoň podmínku, při které k chybě dojde.
Chybovou hlášku způsobuje zvýrazněný řádek:

if(!isset($_COOKIE[$jmeno_cookie])) {
if(isset($o)) { // chyba ve vyvolání
$o = null;
setcookie($jmeno_cookie, '1', time()+$exp, '/');
}
else { // první vyvolání bez cookie
$odkaz = '1';
setcookie($jmeno_cookie, '0', time()+$exp, '/');
}
}
else { // následující vyvolání s cookie
if(isset($o)) { // hlas nalezen
if($_COOKIE[$jmeno_cookie] == '0') { // zatím nehlasoval
setcookie($jmeno_cookie, '1', time()+$exp, '/');
}
else { // již hlasováno
$o = null;
}
}
else { // refresh
$odkaz = '1';
}
}


Poradíte mi někdo, jak tuhle chybu odstranit?

Předem moc díky. Příjemný den všem.
MilanJ
Profil
Tenhle dotaz je můj... hlava děravá se zapomněla přihlásit.
WertriK
Profil *
Přihlášený být nemusíš, stačí jen vyplnit jméno.

No k věci.
Stačí když dáš na úplný začátek stránky
<?
ob_start();
?>
a na konec
<?
ob_end_clean();
?>

Jde totiz o to že hlavicky a cookie musi být odeslány ještě před tím, než neco vypíšeš
máš třeba

echo "ahoj";
setcookie($jmeno_cookie, '1', time()+$exp, '/');

tak ti to vyhodí hlášky že hlavička je už odeslaná, řešení je

setcookie($jmeno_cookie, '1', time()+$exp, '/');
echo "ahoj";

Nebo to co jsem ti napsal viz http://interval.cz/clanek.asp?article=1063
Peca
Profil
FAQ
Před použitím cookies nesmí být žádný výstup. Žádný html kód nebo echo. Vadí i mezera před <?
Celý tento kus kódu hoď někam na začátek stránky, za deklaraci proměnných apod.
MilanJ
Profil
Díky, ob_start() a ob_end_clean() sice neznám, ale funguje to.
Přečtu si článek.
Ještě jednou moc díky.;-)
Toto téma je uzamčeno. Odpověď nelze zaslat.