Onmiddellike herleiding in PHP

'n Herleiding wat uitgevoer word met die funksie header gebeur nie op die oomblik van die roep van hierdie funksie nie. Aangesien PHP self nie die herleiding uitvoer nie, maar slegs die ooreenstemmende HTTP-kopstuur na die blaaier stuur.

Dit beteken dat die herleiding slegs sal plaasvind wanneer PHP die hele script uitgevoer het tot die einde. As gevolg hiervan kan verskeie parasitiese effekte voorkom.

Byvoorbeeld, in die volgende kode wil ons of 'n herleiding uitvoer, of 'n navraag na die databasis. Maar die databasisnavraag sal uitgevoer word selfs al was daar 'n opdrag vir herleiding:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // sal uitgevoer word selfs met herleiding!
?>

Om sulke probleme te vermy, is dit nodig om onmiddellik na die herleiding die funksie die te roep, wat die uitvoering van die script onmiddellik sal beëindig en die herleiding sal dadelik plaasvind:

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

Herskep een of ander parasitiese effek in jou kode. Stel dit dan reg met behulp van die funksie die.