⊗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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць