PHP හි ක්ෂණික යළියොමු කිරීම්
header ශ්රිතය භාවිතයෙන් සිදු කරන ලද යළියොමුවක් මෙම ශ්රිතය කැඳවන මොහොතේම සිදු නොවේ. මක්නිසාද යත්, PHP විසින් යළියොමු කිරීම සිදු නොකර, බ්රවුසරයට අදාළ HTTP ශීර්ෂය යවන බැවිනි.
මෙයින් අදහස් කරන්නේ PHP ස්ක්රිප්ටය කෙළවර දක්වා සම්පුර්ණයෙන් ක්රියාත්මක වූ පසුව පමණක් යළියොමු කිරීම සිදු වන බවයි. මේ හේතුවෙන් විවිධ අවාසිදායක බලපෑම් ඇති විය හැකිය.
උදාහරණයක් ලෙස, පහත කේතයේ අපට යළියොමු කිරීමක් හෝ දත්ත සංචිතයට විමසුමක් කිරීමට අවශ්යය. නමුත් යළියොමු කිරීමේ අණවාර්තාවක් තිබුණද දත්ත සංචිතයට විමසුම ක්රියාත්මක වේ:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // යළියොමුවකදී පවා ක්රියාත්මක වේ!
?>
මෙවැනි ගැටළු වළක්වා ගැනීම සඳහා, යළියොමු කිරීමෙන් පසු වහාම die ශ්රිතය කැඳවිය යුතුය. එමඟින් ස්ක්රිප්ටය ක්රියාත්මක වීම ක්ෂණිකව අවසන් කර යළියොමු කිරීම වහාම සිදු වේ:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
ඔබගේ කේතයේ යම් අවාසිදායක බලපෑමක් නිර්මාණය කරන්න. ඉන්පසු එය die ශ්රිතය භාවිතයෙන් නිවරදි කරන්න.