Реддиректи фаврӣ дар 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 ислоҳ кунед.