Chuyển hướng tức thì trong PHP

Chuyển hướng được thực hiện bằng hàm header không xảy ra ngay tại thời điểm gọi hàm đó. Bởi vì bản thân PHP không thực hiện chuyển hướng, mà chỉ gửi tiêu đề HTTP tương ứng tới trình duyệt.

Điều này có nghĩa là chuyển hướng sẽ chỉ xảy ra khi PHP thực thi toàn bộ script cho đến cuối. Do đó có thể xảy ra các hiệu ứng phụ không mong muốn.

Ví dụ, trong đoạn code sau, chúng ta muốn thực hiện hoặc là chuyển hướng, hoặc là truy vấn cơ sở dữ liệu. Nhưng truy vấn cơ sở dữ liệu vẫn sẽ được thực hiện ngay cả khi có lệnh chuyển hướng:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // sẽ thực thi ngay cả khi chuyển hướng!
?>

Để tránh các vấn đề tương tự, cần ngay lập tức sau khi chuyển hướng gọi hàm die, hàm này sẽ lập tức kết thúc việc thực thi script và chuyển hướng sẽ xảy ra ngay lập tức:

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

Hãy tái tạo một hiệu ứng phụ nào đó trong code của bạn. Sau đó sửa chữa nó bằng hàm die.