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";

