Kohene ümbersuunamine PHP-s
Ümbersuunamine, mis on tehtud funktsiooniga
header, ei toimu selle
funktsiooni väljakutsumise hetkel.
Sest PHP ise ei täida ümbersuunamist,
vaid saadab vastava HTTP päise brauserisse.
See tähendab, et ümbersuunamine toimub alles siis, kui PHP on täitnud kogu skripti lõpuni. Selle tõttu võivad esineda erinevad parasiitefektid.
Näiteks järgmises koodis tahame teha kas ümbersuunamise või andmebaasipäringu. Kuid andmebaasipäring tehakse isegi siis, kui oli käsk ümbersuunamiseks:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // teostatakse isegi ümbersuunamise korral!
?>
Selliste probleemide vältimiseks tuleb
kohe pärast ümbersuunamist välja kutsuda funktsioon
die, mis koheselt lõpetab
skripti täitmise ja ümbersuunamine toimub
kohe:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
Reprodutseerige mingi parasiitne
efekt oma koodis. Seejärel parandage
see funktsiooni die abil.