dum | žák

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í
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

pdf icon
PHP - metoda GET

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ě.

  1. <?php
  2.  
  3. $title = "Lorem ipsum";
  4.  
  5. include "header.php";
  6.  
  7. switch ($_GET["page"]) {
  8. case "uvod":
  9. $page = "uvod.php";
  10. break;
  11. case "kontakty":
  12. $page = "kontakty.php";
  13. break;
  14. default:
  15. $page = "uvod.php";
  16. break;
  17. }
  18.  
  19. include $page;
  20.  
  21. 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.

  1. <?php
  2.  
  3. $title = "Lorem ipsum";
  4.  
  5. include "header.php";
  6.  
  7. if (isset($_GET["page"])) {
  8. $pozadavek = $_GET["page"];
  9. }
  10. else {
  11. $pozadavek = "uvod";
  12. }
  13.  
  14. switch ($pozadavek) {
  15. case "uvod":
  16. $page = "uvod.php";
  17. break;
  18. case "kontakty":
  19. $page = "kontakty.php";
  20. break;
  21. default:
  22. $page = "error.php";
  23. break;
  24. }
  25.  
  26. include $page;
  27.  
  28. include "footer.php";