HTTP přesměrování v PHP
Z MiS
(Rozdíly mezi verzemi)
(Vytvoření stránky) |
(→Výpis potvrzení: Doplněno zobrazení výsledku.) |
||
Řádka 29: | Řádka 29: | ||
* Pro výpis o úspěšně provedené akci si můžeme do URL adresy či do pole <code>$_POST</code> přidat další informace: | * Pro výpis o úspěšně provedené akci si můžeme do URL adresy či do pole <code>$_POST</code> přidat další informace: | ||
<div class="Priklad"> | <div class="Priklad"> | ||
− | + | ; Přesměrování v <tt>action-zpracuj.php</tt>: | |
+ | header("Location: /index.php?potvrd=ok"); | ||
+ | die; | ||
+ | ; Následné zobrazení hlášky v <tt>/index.php</tt>: | ||
+ | <?php | ||
+ | if ( | ||
+ | isset($_GET["potvrd"]) | ||
+ | && | ||
+ | $_GET["potvrd"] == "ok" | ||
+ | ) { | ||
+ | ?> | ||
+ | <p style="background-color:green;">Zápis se povedl!</p> | ||
+ | <?php | ||
+ | } | ||
+ | ?> | ||
</div> | </div> |
Aktuální verze z 11. 2. 2015, 10:38
Obsah |
Princip
- Tímto příkazem požádáme prohlížeč, aby místo této stránky zobrazil jinou.
- Uživatel nic nezjistí, jen bude vidět jinou URL adresu v adresním řádku.
Jak zapsat?
- Používáme funkci
header(...)
v PHP:
header("Location: /index.php");
- Funkce
header(...)
doplní do hlaviček protokou HTTP zadaný text. - V tomto případě využíváme hlavičku Location:.
- Předtím voláním funkce
header
nesmí být žádný HTML výstup!
Přesměrování do stejného adresáře
- Následující kód bude fungovat bez ohledu na umístění na serveru.
- Vždy odkáže na soubor index.php ve stejném adresáři, jako aktuální skript.
$host = $_SERVER['HTTP_HOST']; $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); $stranka = 'index.php'; header("Location: http://$host$uri/$stranka");
Výpis potvrzení
- Pro výpis o úspěšně provedené akci si můžeme do URL adresy či do pole
$_POST
přidat další informace:
- Přesměrování v action-zpracuj.php
header("Location: /index.php?potvrd=ok"); die;
- Následné zobrazení hlášky v /index.php
<?php if ( isset($_GET["potvrd"]) && $_GET["potvrd"] == "ok" ) { ?> <p style="background-color:green;">Zápis se povedl!</p> <?php } ?>