⊗ppPmHpRHP 400 of 447 menu

HTTP-vastauksen otsikko-ongelma PHP:ssä

HTTP-sääntöjen mukaan lähetetään ensin HTTP-otsikot ja sitten HTTP-vastauksen runko. Tästä johtuen header-funktion käyttö PHP:ssä on erikoista.

Asia on siinä, että jos ennen tämän funktion kutsua tulostetaan jotain näytölle, se tulkitaan vastauksen rungon alkuksi. Tässä tapauksessa header-funktion kutsu johtaa PHP-varoituksen tekstillä headers already sent. Otsikot saattavat jopa lähettyä. Virhe ei ehkä edes tulostu (riippuen PHP:n asetuksista). Mutta useimmiten tämä tapahtuu vain paikallisessa ympäristössä, ja kun sivusto lasketaan internetiin, kaikki hajoaa.

Tulostuksella näytölle tarkoitetaan mitä tahansa tekstiä. Esimerkiksi näin:

teksti <?php header('Content-Type: text/html'); ?>

Tai tyhjä rivi:

<?php header('Content-Type: text/html'); ?>

Tai välilyönti:

<?php header('Content-Type: text/html'); ?>

Tai tagi:

<div> <?php header('Content-Type: text/html'); ?> </div>

Tai tulostus echo:lla:

<?php echo 'abc'; header('Content-Type: text/html'); ?>

Tai tulostus var_dump:lla:

<?php $str = 'abc'; var_dump($str); header('Content-Type: text/html'); ?>

Jopa PHP-varoitukset ovat tulostusta näytölle. Seuraavassa esimerkissä tarkoituksella viitataan olematon muuttujaan, mikä johtaa varoituksen tulostukseen:

<?php $text += 1; header('Content-Type: text/html'); ?>

PHP-sulkujen väliset rivinvaihdot myös aiheuttavat tulostusta näytölle:

<?php echo 'abc'; ?> <?php header('Content-Type: text/html'); ?>

Luo tarkoituksella tulostus näytölle ennen header-funktiota. Tutki syntyvän virheen tekstiä.

Korjaa tässä koodissa tehty virhe:

<!DOCTYPE html> <html> <head> <?php header('Content-Type: text/html'); ?> </head> <body> teksti <body> <html>
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää