⊗ppPmRdIns 405 of 447 menu

Okamžité přesměrování v PHP

Přesměrování provedené pomocí funkce header neproběhne v okamžiku volání této funkce. PHP samo neprovádí přesměrování, pouze odesílá příslušnou HTTP hlavičku do prohlížeče.

To znamená, že k přesměrování dojde pouze tehdy, když PHP dokončí celý skript až do konce. Kvůli tomu mohou vznikat různé parazitní efekty.

Jako příklad, v následujícím kódu chceme provést buď přesměrování, nebo dotaz do databáze. Ale dotaz do databáze se provede, i když byl vydán příkaz k přesměrování:

<?php if ($_GET['test']) { header('Location: test.php'); } $query = "UPDATE users SET changed=1 WHERE id=1"; mysqli_query($link, $query); // provede se i při přesměrování! ?>

Pro zabránění podobným problémům je potřeba ihned po přesměrování zavolat funkci die, která okamžitě ukončí provedení skriptu a přesměrování proběhne okamžitě:

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

Reprodukujte nějaký parazitní efekt ve vašem kódu. Poté jej opravte pomocí funkce die.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout