Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Yritän ohjata php:llä eteenpäin *.pdf tiedostolle, mutta...

Silakka [04.04.2004 12:30:24]

#

... 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!

kenkku [04.04.2004 13:15:21]

#

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.

Nyntti [04.04.2004 13:17:38]

#

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.

Silakka [04.04.2004 14:01:02]

#

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ÄÄN

alkaa jo vähän v*tuttamaan ihmisten jaksamattomuus.

No onko tuossa sitten tulostettu jotain ennen headeria?
Ei minusta.

Kiitos, Nyntti. Kokeilen tuota.

T.M. [04.04.2004 14:13:58]

#

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();
?>

Blaze [04.04.2004 14:48:43]

#

Pelkkä rivinvaihto tai välilyönti ennen alottavaa <?php -tagia riittää aiheuttamaan tuon virheen. Tarkkuutta vaaditaan. Tai sitten ob_start():a.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta