Takojšnje preusmeritve v PHP
Preusmeritev, izvedena s funkcijo
header, se ne zgodi v trenutku
klica te funkcije. Konec koncev PHP sam
ne izvede preusmeritve, ampak le pošlje
ustrezno HTTP glavnico v brskalnik.
To pomeni, da se bo preusmeritev zgodila šele ko bo PHP izvedel celotno skripto do konca. Zaradi tega lahko pride do različnih neželenih učinkov.
Na primer, v naslednji kodi želimo izvesti bodisi preusmeritev bodisi poizvedbo v bazo. Toda poizvedba v bazo bo izvedena tudi če je bil ukaz za preusmeritev:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // bo izvedena tudi ob preusmeritvi!
?>
Da se izognemo takšnim težavam, je potrebno
takoj po preusmeritvi poklicati funkcijo
die, ki takoj konča izvajanje
skripte in preusmeritev se bo zgodila
takoj:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
Ponazorite kakšen neželeni učinek
v vaši kodi. Nato ga popravite
z uporabo funkcije die.