⊗ppPmRdIns 405 of 447 menu

Незабавни пренасочвания в 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.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне