Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Merkillinen header-ongelma

Sivun loppuun

Tumpelo [11.06.2006 13:00:48]

#

Tiedän ettei ennen headereiden lähettämistä saa tulostaa mitään jne mutta tämä menee jo liian pitkälle! Epätoivoissani tiivistin koodin lopulta muotoon

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html><?php session_start(); ?>

<head>
<title>Kotisivuyhteisö</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

mutta siitä huolimatta "headers already sent - output started at line 3". Mitä tässä nyt oikein keksisi?

Draiz [11.06.2006 13:09:10]

#

Sivun alkuun (ennen kuin tulostat mitään):

<?php ob_start(); ?>

Sivun loppuun:

<?php ob_end_flush(); ?>

Tempfile [11.06.2006 13:10:06]

#

"tuloste" tarkoittaa tässä tapauksessa mitä tahansa tekstiä mikä palvelimelta lähtee klienttikoneelle kolisemaan. Se tarkoittaa siis kaikkea html:ää yms., ihan doctypestä alkaen. Jos tuntuu liian vaikealle saada niitä headereitä lähtemään ennen muuta tavaraa, niin selaile php.netistä output buffering-osio.
EDIT: aha, Draiz ehtikin kertomaan olennaisimman osan em. asiasta :)

Tumpelo [11.06.2006 13:12:42]

#

Draiz kirjoitti:

Sivun alkuun (ennen kuin tulostat mitään):

<?php ob_start(); ?>

Sivun loppuun:

<?php ob_end_flush(); ?>

Pitääkös tuo laittaa sitten ennen doctype määritystä, siis tuo aloitustagi? Tuntuu kyllä aika raiskaukselle. ^^

Olga [11.06.2006 13:31:41]

#

Eiköhän se tullut jo edellisistä viesteistä selväksi että ihan sivun alkuun tuo ob_start ja loppuun ob_end_flush. Ja ennenku kysyt että "ihanko ihanko ihanko alkuun?", niin vastaan jo että ihan alkuun :)

Metabolix [11.06.2006 13:32:11]

#

http://pp.kpnet.fi/blaze/codefaq/#headerssent

Minä yleensä aloitan sivun PHP-koodilla joka tapauksessa, sillä tavalla on helpompaa. Samalla saa mahdollisuuden liittää saman yläosan includella kaikille sivuille.

Tumpelo [11.06.2006 13:34:44]

#

Joo laitoin ihan ihan ihan alkuun ja hyvin toimii.

Merri [11.06.2006 19:03:37]

#

PHP-koodi ei lähde asiakkaalle. Koodi voi olla vaikka näin:

<?php

$jotain = 'PÄLÄ PÄLÄ PÄLÄ PÄÄ!';
$voi_olla_vaikka_mita_muuta = 'Joo.';
$kunhan_et_kayta_echoa_niin_kaikki_ok = 'Tottele.';

?><!DOCTYPE ...>
<head>
</head>
<body>
<?php echo $jotain; ?>
</body>
</html>

Tärkeintä on, että asiakaskoneen saamalla sivulla <!DOCTYPE tulee ensimmäisestä merkistä ja ensimmäiselle riville, ja tuolla tavalla tekemällä näin myös tapahtuu.


Sivun alkuun

Vastaus

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

Tietoa sivustosta