Dynamický web
Název školy | Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace | ||
Adresa školky | Kostelní 134, 411 08 Štětí | ||
IČ | 46773509 | ||
Název operačního programu | OP Vzdělávání pro konkurenceschopnost | ||
Registrační číslo | CZ.1.07/1.5.00/34.1006 | ||
Označení vzdělávacího materiálu | |||
Název tématické oblasti (sady) | Programování | ||
Název materiálu | PHP - metoda GET | ||
Anotace | |||
Autor | Jazyk | ||
Očekávaný výstup | |||
Klíčová slova | |||
Druh výukového zdroje | Věková skupina žáků | ||
Typ interakce | Ročník | ||
Speciální vzdělávací potřeby | žádné | ||
Zhotoveno, (datum/období) | Celková velikost |
Obsah
GET vs POST
V PHP "není" možné uživatelský vstup získávat z klávesnice nebo myši (alespoň ne u webových aplikací).
Jediný způsob je prostřednictvím požadavku GET nebo POST (jež jsou součástí HTTP specifikace). POST nechme prozatím stranou, používá se výhradně s formuláři.
I GET lze využít při práci s formuláři, nicméně smyslem tohoto typu požadavku je jiný. Jak už název napoví, tak GET znamená něco získat/obstarat/opatřit ...
Zatímco POST se používá pro odesílání dat směrem k serveru, tak GET se používá pro stahování dat ze serveru. Doposud jsme používali metodu GET, jen jste to zatím nevěděli.
Každý požadavek serveru je specifikován svou URL.
To je např. http://localhost/index.php
.
Resp., to je jedna ze základních forem URL.
URL
URL adresa může být docela složitá, využijí-li se všechny nepovinné parametry.
Ty povinné jsou schema a hostitel, zde je schéma http
a hostitel localhost
.
Zaměřme se nyní na ty parametry, které se objevují za prvním lomítkem, hned po názvu hostitele.
http://localhost/index.php
Je jím název souboru, který chceme stáhnout. My už teď víme, že daný soubor se nestahuje, protože webový server pozná, že jde o PHP soubor, a na místo stažení jej spustí pomocí interpretu PHP a vrátí pouze výsledek.
Shodou okolností soubor index.php
je výchozím názvem souboru, který se "stahuje" vždy, není-li zadán žádný jiný název.
Takže požadavek na http://localhost
se ve skutečnosti ještě před odesláním doplní o lomítko na konci (i když jej prohližeč třeba ani nezobrazí), tedy: http://localhost/
.
A na serveru se za lomítko dosadí (server je totiž tak nastaven) výchozí soubor, např. index.php
.
Parametry
Součástí URL mohou být ještě další parametry, které se zavěsí za název souboru.
Přesněji název souboru a parametry jsou oddělené symbolem ?
.
Mějme příklad následující smyšlené URL:
http://localhost/index.php?stav=ok
Parametrů může být i více.
Jako oddělovač se pak používá další symbol, a sice &
.
http://localhost/index.php?stav=ok&code=123
A právě tyto parametry nás budou nyní zajímat. Jak se k nim dostat z PHP skriptu?
Superglobální proměnná _GET
V PHP existuje něco jako superglobální proměnná. To je taková proměnná, která je dostupná z kteréhokoli místa aplikace (cizím slovem: z kteréhokoli kontextu).
$_GET
je tzv. asociativní pole.
Indexy, správněji klíči jednotlivých prvků pole tedy nemusí tvořit čísla (jak jsme byli doposud zvyklí) ale i řetězce.
Možná vás napadlo, že klíči budou právě názvy parametrů z URL, tedy:
index.php
<?php echo "stav: " . $_GET["stav"] . "<br />"; echo "code: " . $_GET["code"] . "<br />";
Navigace mezi stránkami
Parametry v požadavku GET lze využít např. ke změně obsahu webové stránky.
U statické HTML prezentace se vždy v požadavku změní soubor, který se má stáhnout, např. uvod.html
nebo kontakty.html
.
V případě PHP mohou požadavky vypadat např. takto: index.php?page=uvod
nebo index.php?page=kontakty
.
Pro zainteresované, nechť se podívají, jaká kouzla lze provádět s pomocí mod_rewrite
(k tomu je ovšem zapotřebí již webový server Apache).
Implementace
Kód, který by podsouval obsah podle parametru page
v požadavku GET by mohl s využitím include
vypadat následovně.
<?php $title = "Lorem ipsum"; include "header.php"; switch ($_GET["page"]) { case "uvod": $page = "uvod.php"; break; case "kontakty": $page = "kontakty.php"; break; default: $page = "uvod.php"; break; } include $page; include "footer.php";
S využitím přepínače switch
se do proměnné $page
uloží název souboru, který se bude na řádce 19 inkludovat.
Bude-li zadán nějaký neplatný nebo žádný název, zobrazí se výchozí (default) stránka "uvod.php".
To ovšem není zcela správně, protože pak nelze odlišit platnou stránku od neplatné.
Pozor, soubory uvod.php
a kontakty.php
musí existovat.
Správněji je lepší zachytit chybový stav a podstrčit uživateli nějakou chybovou hlášku.
<?php $title = "Lorem ipsum"; include "header.php"; $pozadavek = $_GET["page"]; } else { $pozadavek = "uvod"; } switch ($pozadavek) { case "uvod": $page = "uvod.php"; break; case "kontakty": $page = "kontakty.php"; break; default: $page = "error.php"; break; } include $page; include "footer.php";