⊗ppPmRdSWP 407 of 447 menu

Automatické přesměrování s přidáním parametrů v PHP

Předpokládejme, že na stránce index.php je předán GET parametr s názvem arg. Vypišme jeho obsah na obrazovku:

<?php echo $_GET['arg']; ?>

Předpokládejme, že naše stránka bez GET parametru nemůže fungovat správně. V našem případě to skutečně platí, protože pokud parametr není předán, přístup k $_GET['arg'] povede k chybě.

Může vyvstat otázka, proč by se člověk vůbec dostal na naši stránku bez parametru? Vždyť můžeme všude na našem webu dávat odkazy s tímto parametrem. To však není záruka: uživatel našeho webu může například zkopírovat odkaz odněkud a přitom ztratit parametr. Nebo jej jednoduše náhodně smazat při úpravě adresního řádku.

Obecně, v každém případě by náš kód měl předpokládat takovou situaci a něco s ní udělat. Co se s tím dá udělat?

Můžeme zkontrolovat existenci našeho GET parametru a vypisovat jej pouze tehdy, pokud existuje:

<?php if (isset($_GET['arg'])) { echo $_GET['arg']; } else { // nějak reagujeme, například zprávou } ?>

Můžeme postupovat chytřeji:

<?php if (!isset($_GET['arg'])) { $_GET['arg'] = 'default'; // výchozí hodnota } echo $_GET['arg']; // garantovaně něco vypíše bez chyby ?>

Nebo můžeme udělat to, aby při vstupu na stránku bez parametru došlo k přesměrování na stejnou stránku s parametrem:

<?php if (!isset($_GET['arg'])) { header('Location: ?arg=default'); } echo $_GET['arg']; // parametr je garantovaně přítomen ?>

Vysvětlete, v čem se liší druhá varianta od třetí.

Předpokládejme, že na stránce page.php lze předat číslo pomocí GET parametru s názvem num. Zařiďte, aby při vstupu bez tohoto parametru došlo automaticky k přesměrování na tutéž stránku, ale s parametrem num s hodnotou 1.

Č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