Ridrektimi i Menjëhershëm në PHP
Ridrektimi i kryer duke përdorur funksionin
header nuk ndodh në momentin
e thirrjes së këtij funksioni. Në fund të fundit, PHP vetë
nuk kryen ridrektim, por thjesht dërgon
header-in përkatës HTTP në shfletues.
Kjo do të thotë që ridrektimi do të ndodhë vetëm kur PHP të ketë ekzekutuar të gjithë skriptën deri në fund. Për shkak të kësaj mund të ndodhin efekte të ndryshme parazitare.
Për shembull, në kodin vijues ne duam të kryejmë ose një ridrektim, ose një kërkesë në bazën e të dhënave. Por kërkesa në bazën e të dhënave do të ekzekutohet edhe nëse ka pasur urdhër për ridrektim:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // do të ekzekutohet edhe me ridrektim!
?>
Për të shmangur probleme të tilla, duhet
që menjëherë pas ridrektimit të thirret funksioni
die, i cili do të përfundojë menjëherë
ekzekutimin e skriptës dhe ridrektimi do të ndodhë
menjëherë:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
Riprodhni ndonjë efekt parazitar
në kodin tuaj. Pastaj korrigjojeni
atë duke përdorur funksionin die.