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<?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<?php
  if ($_GET['test']) {
    header('Location: test.php');
    die();
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query);
?>
Задание 1

Riprodhni ndonjë efekt parazitar në kodin tuaj. Pastaj korrigjojeni atë duke përdorur funksionin die.