Umiddelbar omdirigering i PHP
En omdirigering utført med funksjonen
header skjer ikke i øyeblikket
denne funksjonen kalles. Tross alt utfører PHP selv
ikke omdirigeringen, men sender kun
tilsvarende HTTP-header til nettleseren.
Dette betyr at omdirigeringen bare vil skje når PHP har kjørt hele skriptet til slutten. På grunn av dette kan det oppstå forskjellige uønskede effekter.
For eksempel, i følgende kode ønsker vi å utføre enten en omdirigering eller en databaseforespørsel. Men databaseforespørselen vil bli utført selv om det var en kommando for omdirigering:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // vil utføres selv ved omdirigering!
?>
For å unngå slike problemer må du
umiddelbart etter omdirigeringen kalle funksjonen
die, som umiddelbart avslutter
skriptkjøringen og omdirigeringen vil skje
øyeblikkelig:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
Reproduser en uønsket
effekt i koden din. Deretter rett den opp
ved hjelp av funksjonen die.