login  Naam:   Wachtwoord: 
Registreer je!
 Overzicht:
Overzicht > PHP > HTTP > header()

Gebruik:
header("...");

Uitleg:
Er zijn veel verschillende headers maar in deze post ga ik de belangrijkste uitleggen en dat is een header waarmee je de bezoeker naar een andere pagina kan sturen. Je moet wel opletten dat er geen output voor een header staat want dan krijg je errors. De header moet dus helemaal vanboven staan.

Als je meer uit deze functie wil halen: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14


Voorbeeld:
<?php
header 
("location:www.google.com");
?>

Bijdragen :
Thomas
header() werkt bij mijn weten prima in FireFox?

Het moet wel zijn:
  1. header("Location: ...");

met "..." je URL (let op de hoofdletter L en de spatie na de dubbele punt, misschien zorgt het je niet houden aan dit format voor problemen in FF?).

Over veiligheid:
Als je je pagina's (bijvoorbeeld queries, uploads et cetera) beveiligt met behulp van header(), dan kan dit prima, maar let er wel op dat je meteen na je header() de language construct exit() zet als je headers gebruikt om niet-geauthoriseerde gebruikers er uit te gooien. Hiermee wordt de uitvoering van de rest van het script stopgezet.

Headers behoren tot OUTPUT, en deze worden pas aan het einde van het script "verwerkt", het is niet zo dat je bij header() meteen verkast naar de Location, tenzij je exit() gebruikt, waarmee je de rest van het script termineert.

Fout
  1. <?php
  2. // constante die controleert of iemand is ingelogd, elders ingesteld
  3. if(!defined("IS_ADMIN"))
  4. {
  5. header("Location: somewhere.else.php");
  6. }
  7.  
  8. // deze query wordt gewoon uitgevoerd
  9. mysql_query($some_super_important_query);
  10. ?>


Goed
  1. <?php
  2. // constante die controleert of iemand is ingelogd, elders ingesteld
  3. if(!defined("IS_ADMIN"))
  4. {
  5. header("Location: somewhere.else.php");
  6. exit(); // <-- HEEL BELANGRIJK!!!
  7. }
  8.  
  9. // deze query wordt niet uitgevoerd als de constante IS_ADMIN niet geset is
  10. mysql_query($some_super_important_query);
  11. ?>
nemesiskoen
  1. header ("location:www.google.com");

Bovenstaande syntaxis is goed voor alle gevallen buiten bij het verwerken van formulieren.
Als je dan bovenstaande syntaxis gebruikt na het verwerken van je formulier om er voor te zorgen dat je gebruikers geen multi posts doen door op F5 te drukken dan heb je een probleem.
Want bij sommige browsers (IE) werkt dit wel, bij andere (FireFox) niet.

Gebruik daarom:
  1. <?php
  2. header("Refresh: 0; URL= [je pagina]");
  3. exit; //optioneel maar valt aan te raden
  4. ?>


Omdat de pagina even nodig heeft om te laden zal je die exit er best bij kunnen zetten.
Stel je wilt de gebruiker doorsturen naar een andere pagina omdat hij niet op de pagina thuishoort kan hij enkele seconden toch de informatie zien (als je niet met if {} else {} werkt).

Een handige functie die er voor zorgt dat je slechts een klein deel moet veranderen:
  1. <?php
  2. function header2($header, $refresh = 0) {
  3. $header = str_replace("location:", "Refresh: ". $refresh ."; URL = ", $header);
  4. header($header);
  5. //desnoods een tekst hieronder
  6. //U wordt <strong>doorverzonden</strong>. Even geduld aub.
  7. }
  8. ?>


 Overzicht
header()
setcookie()



© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.062s