... tulee tällainen valitus:
Luentoa ei löydy! Luentoa ei löydy!Warning: Cannot add header information - headers already sent by (output started at /opt/www/export/henk/anhoikka/www/luennot.php:5) in /opt/www/export/henk/anhoikka/www/luennot.php on line 54
Luentoa ei löydy!
Ja scripti on tämmöinen:
53 |if($id == gen1201)
54 | header("Location: 1._johdanto.pdf");
55 |else
56 | echo "Luentoa ei löydy!";
Mistä tämä johtuu? Tiedosto on ainakin olemassa ja se on oikean niminenkin. Tarvitsisin pikaista apua! On kiire!
Te ihmiset ette koskaan välitä hakea putkasta..
Pitäisi laittaa kissan kokosilla kirjaimilla seuraava sääntö jokapaikkaan missä lukee header:
ENNEN HEADERIA EI SAA TULOSTAA MITÄÄN
alkaa jo vähän v*tuttamaan ihmisten jaksamattomuus.
Muistitko lisätä koodin alkuun ja loppuun funktiot ob_start() ja ob_end_flush() ?
Eli esim.
<?php ob_start(); // heti php-tagin jälkeen if($id == gen1201) header("Location: 1._johdanto.pdf"); else echo "Luentoa ei löydy!"; ob_end_flush();// ennen lopetustagia ?>
...eli aina kun käytät headereita, niin nuo funkkarit koodin alkuun ja loppuun.
kenkku kirjoitti:
Te ihmiset ette koskaan välitä hakea putkasta..
Pitäisi laittaa kissan kokosilla kirjaimilla seuraava sääntö jokapaikkaan missä lukee header:
ENNEN HEADERIA EI SAA TULOSTAA MITÄÄNalkaa jo vähän v*tuttamaan ihmisten jaksamattomuus.
No onko tuossa sitten tulostettu jotain ennen headeria?
Ei minusta.
Kiitos, Nyntti. Kokeilen tuota.
Kyllä siinä on tulostettu jotain ennen headereita, muuten tuota virheilmoitusta ei tulisi.
Tulostusta ei tarvitse tehdä välttämättä PHP:n funktioilla.
Esimerkiksi myös tämä heittää virhettä:
<html> <body> <?php header("Location: seppo.php"); ?> </body> </html>
Ja jotta virhettä ei tule, eikä koodia tarvitse muuttaa, niin sitten tungetaan ne ob_start() ja ob_end_flush() alkuun ja loppuun:
<?php ob_start(); ?> <html> <body> <?php header("Location: seppo.php"); ?> </body> </html> <?php ob_end_flush(); ?>
Pelkkä rivinvaihto tai välilyönti ennen alottavaa <?php -tagia riittää aiheuttamaan tuon virheen. Tarkkuutta vaaditaan. Tai sitten ob_start():a.
Aihe on jo aika vanha, joten et voi enää vastata siihen.