bezorg de laatste berichten direct op de desktop
Welkom, Gast
Alstublieft Inloggen of Registreren.    Wachtwoord verloren?

PHP en html headers
(1 bezoeker) (1) Gast
Ga naar onderkantPagina: 1
TOPIC: PHP en html headers
#2638
PHP en html headers 6 Jaren, 1 Maand geleden Karma: 0
In deze post wil ik iets meer vertellen over de functie [b:2fp3neol]header()[/b:2fp3neol]

Je kan deze functie gebruiken om de headers van een bestand te veranderen In de headers bevindt zich allerlei nuttige informatie, zoals actieve cookies en hun waarden (bij een html bestand), of info over het type document (vb. text/html voor htmlbestand).
deze headers worden opgestuurd naar de server als je bv. een pagina bekijkt en worden ook bijgevoegd bij bestanden die de server naar jou verstuurd.

In de headers van een html-bestand dat van de server naar jou werd verstuurd kan er vb. staan:

[code:2fp3neol]Type: text/html
Cookie: ...[/code:2fp3neol]

Met de functie [b:2fp3neol]header()[/b:2fp3neol] kan je deze info manipuleren.
Enkele handige voorbeelden zijn:

[php]<?php
// inhoud van pagina1.php
header("Location: pagina2.php");
// hiermee wordt de gebruiker direct omgeleid naar pagina2.php wanneer hij pagina1.php aanroept
?>[/php]

[php]<?php
// inhoud van random_image.php
// we kunnen zelf een random image maken (vb voor controle bij registratie)
// eerst zeggen we dat de output een png-afbeelding is
header("Content-type: image/png");
// we kunnen het bestand zelfs via een 'opslaan als...' venstertje bij de browser laten toekomen (image.png zal hier de standaardnaam zijn)
header("Content-Disposition: attachment; filename=image.png");
// hier volgt de code om een png-afbeelding te maken met PHP

?>[/php]

Zoals jullie kunnen zien, zitten er zeer handige dingen tussen, voor nog meer vb. zie <!-- m --><a class="postlink" href="be.php.net/manual/nl/function.header.php...er.php</a><!-- m -->

Let wel op: alle header()-functies moeten voor enige output komen (dus voor echo()-functies of enige vorm van output die de gebruiker zal zien), dus meestal aan de top van een document
elizondo
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2643
Re: PHP en html headers 6 Jaren, 1 Maand geleden Karma: 0
[quote=&quot;elizondo&quot;:3l2h3kz5]

Let wel op: alle header()-functies moeten voor enige output komen (dus voor echo()-functies of enige vorm van output die de gebruiker zal zien), dus meestal aan de top van een document[/quote:3l2h3kz5]

Anders krijg je de gevreesde foutmelding "Headers already sent".
Deze kun je vermijden door in het begin van je script ob_start(); te zetten en op het einde ob_end_flush();
Beter is natuurlijk nog om je script op een zodanige manier te scripten dat je deze "truc" niet hoeft te gebruiken...
wimvd
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2645
Re: PHP en html headers 6 Jaren, 1 Maand geleden Karma: 0
[quote=&quot;webmaster&quot;:ce77qt7x]
Deze kun je vermijden door in het begin van je script ob_start(); te zetten en op het einde ob_end_flush();
Beter is natuurlijk nog om je script op een zodanige manier te scripten dat je deze "truc" niet hoeft te gebruiken...[/quote:ce77qt7x]

Dit is de vieste oplossing die er is, beste kun je natuurlijk goed scripten!

( waarschijnlijk werkt error_reporting(0); boven je script ook wel)
_arno_
WMS Fan
Berichten: 16
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2648
6 Jaren, 1 Maand geleden Karma: 0
Wist je dat je zelfs kan controleren of de headers al verzonden zijn, dit doe je met [b:1my7kb13]headers_sent()[/b:1my7kb13] , je krijgt een boolean terug.

Normaal gezien zou [b:1my7kb13]headers_list()[/b:1my7kb13] (alleen PHP 5) een array moeten geven met numerieke indexen (dus geen associatieve) met daarin alle header-onderdelen die al verzonden zijn of nog moeten verzonden worden.
Ik heb deze functie geprobeerd op mijn localhost, maar ze werkt helaas niet, weet er soms iemand hoe dit komt?

Alleen [b:1my7kb13]apache_response_headers()[/b:1my7kb13] werkt, dan krijg je een associatieve array:

[php]&lt;?php
$arrHeaders = apache_response_headers();
// $arrHeaders['Content-type'] zal vb. 'text/html' zijn
?&gt;[/php]
elizondo
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2649
Re: PHP en html headers 6 Jaren, 1 Maand geleden Karma: 0
[quote=&quot;webmaster&quot;:32m8f1nt]
Anders krijg je de gevreesde foutmelding "Headers already sent".
Deze kun je vermijden door in het begin van je script ob_start(); te zetten en op het einde ob_end_flush();
Beter is natuurlijk nog om je script op een zodanige manier te scripten dat je deze "truc" niet hoeft te gebruiken...[/quote:32m8f1nt]

Ik lees op php.net dat ob_end_flush() alsnog op het einde de gebufferde output doorstuurd. Moet je dan niet ob_end_clean() gebruiken?
elizondo
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2651
6 Jaren, 1 Maand geleden Karma: 0
[quote:3mr0cc6p]
To output what is stored in the internal buffer, use ob_end_flush().
[/quote:3mr0cc6p]

Voila
wimvd
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
Ga naar bovenkantPagina: 1
Moderators: Rik, Roy