Sofortige Redirects in PHP

Ein Redirect, der mit der Funktion header durchgeführt wird, erfolgt nicht im Moment des Aufrufs dieser Funktion. Denn PHP selbst führt den Redirect nicht aus, sondern sendet nur den entsprechenden HTTP-Header an den Browser.

Das bedeutet, dass der Redirect erst dann stattfindet, wenn PHP das gesamte Skript bis zum Ende ausgeführt hat. Dadurch können verschiedene unerwünschte Effekte auftreten.

Beispielsweise möchten wir im folgenden Code entweder einen Redirect durchführen oder eine Datenbankabfrage. Aber die Datenbankabfrage wird auch dann ausgeführt, wenn der Redirect-Befehl gegeben wurde:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // wird auch beim Redirect ausgeführt!
?>

Um solche Probleme zu vermeiden, muss unmittelbar nach dem Redirect die Funktion die aufgerufen werden, die die Ausführung des Skripts sofort beendet und der Redirect erfolgt sofort:

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

Reproduzieren Sie einen unerwünschten Effekt in Ihrem Code. Korrigieren Sie ihn anschließend mit der Funktion die.