Upaguzi wa Mara moja katika PHP

Upaguzi, uliotekelezwa kwa kutumia kitendo header haufanyiki wakati wa wito wa kitendo hicho. Kwani PHP yenyewe haitekelezi upaguzi, bali hupeleka tu kichwa (header) cha HTTP kinachofaa kwenye kivinjari.

Hii inamaanisha kuwa upaguzi utafanyika tu wakati PHP itakapomaliza kutekeleza skripti yote hadi mwisho. Kwa sababu hii, athari mbali mbali zisizotakiwa zinaweza kutokea.

Kwa mfano, katika msimbo unaofuata tunataka kutekeleza ama upaguzi, ama ombi kwa hifadhidata. Lakini ombi kwa hifadhidata litatekelezwa hata kama kulikuwa na amri ya upaguzi:

php<?php
  if ($_GET['test']) {
    header('Location: test.php');
  }
  
  $query = "UPDATE users SET changed=1 WHERE id=1";
  mysqli_query($link, $query); // litatekelezwa hata kwa upaguzi!
?>

Ili kuepuka matatizo kama haya, hitaji baada ya upaguzi tu, kuita kitendo die, ambacho kitamaliza utekelezaji wa skripti mara moja na upaguzi utafanyika papo hapo:

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

Tengeneza athari yoyote isiyotakiwa katika msimbo wako. Kisha uitengenezee kwa kutumia kitendo die.