Istnieją dwie metody przesyłania danych do PHP za pomocą formularza HTML. Pierwsza z nich to GET - przesyła dane jawnie dołączając je do adresu strony. Przykład wyglądu tak wysłanych danych wraz z adresem strony na localhoście wyglądać może następująco: localhost/index.php/?id=100&find=fraza - w tym przykładzie po znaku ? wypisane są zmienne i ich wartości, kolejne zmienne oddzielane są przez znak &. Nazwa zmiennej jest przed znakiem równości a wartość jej przypisana po nim. Dane przesłane tą metodą umieszczane są w specjalnej globalnej tablicy asocjacyjnej o jakże przewrotnej nazwie $_GET.
Druga metoda jest mniej jawna i niewidoczna gołym okiem dla użytkownika a jest to metoda POST. Wysłane tą metodą dane umieszczane są również w globalnej tablicy asocjacyjnej o równie przewrotnej nazwie $_POST.
Przykład formularza w HTML-u
Prosty przykład formularza HTML z wykorzystaniem kilku podstawowych kontrolek:
W linijce 8 powyższego kodu tworzę sekcję formularza za pomocą znacznika form. Znacznik ten ma dwie opcje:
action="show_me.php"
określającą ścieżkę do pliku, który zostanie wyświetlony po wciśnięciu przycisku utworzonego za pomocą znacznika input z właściwością type = "submit" (przycisk ów znajduje się w linijce 16).
Druga opcja:
method="POST"
określa w jaki sposób będą wysyłane dane z formularza a tym samym gdzie PHP te dane umieści.
W linijce od 10 do 12 tworzone są kontrolki przycisków jednokrotnego wyboru. Przyciski te mają wspólną wartość:
name="who"
dzięki czemu dane z zaznaczonego przycisku zostaną zapisane w tablicy asocjacyjnej $_POST pod indeksem "who". Wartość jaka zostanie wstawiona do tejże tablicy będzie pobrana z opcji value wybranego przycisku.
W linijce 13 wstawiona została kontrolka tekstowa, która jest tutaj jako znacznik input z ustawioną opcją:
type = "text"
Również i w przypadku tej kontrolki wartość opcji name określa indeks w tablicy asocjacyjnej $_POST, gdzie zapisana zostanie tekst wpisany w tą kontrolkę.
Podobną funkcjonalność zapewnia znacznik textarea, który umożliwia wpisywanie tekstu wieloliniowego.
Plik PHP z obsługą wyświetlania danych z formularza
Skoro formularz został już utworzony, najwyższy nadszedł czas i pora by stworzyć plik show_me.php, który obsłuży wyświetlanie danych:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Wyświetlanko!</title>
</head>
<body>
<?php
$who = htmlentities($_POST['who'], ENT_QUOTES, "UTF-8"); // funkcja htmlentities zamienia znaczniki tagów html na encje
$from = htmlentities($_POST['from'], ENT_QUOTES, "UTF-8");
$description = htmlentities($_POST['description'], ENT_QUOTES, "UTF-8");
if($who == "Człowiek"){
echo("<p>Witaj Człowieku!</p>");
echo("<pre>Witaj człowieku\nw moich skromnych prograch!\nWidać żeś strudzony\nWięc czym prędzej siadaj\nI mi opowiadaj\nCo tam w wielkim świcie");
echo("<pre>A on mnie tylko ziweną:\nJam z $from wszakże jestem</pre>");
echo("<pre>I dalej się rozgadał:\n$description");
}else if($who == "Kosmita"){
echo("<p>Więc kosmitą jesteś!</p>");
echo("<pre>Czekaj no tu bratku\nKapitana Bombę sprowadzę\nNajesz się tu strachu\nJak cię w trąbę rąbnie\nJak ci przyfasoli\nTo zobaczysz z bliska\nRóżne gwiazdozbiory!</pre>");
echo("<pre>A on mnie tylko ziewną\nI tak mi powiada:\nPrzybywam tu z $from i ja ci powiadam</pre>");
echo("<pre>I tu zaczyna bredzić\nKosmiczna pokraka:\n$description");
}else if($who == "Urzędnik państwowy"){
echo("<p>Cha! Więc jesteś urzędasem!</p>");
echo("<pre>Czekaj no gagatku\nNiech no ja coś chwycę\nByle by ciężkiego\nBy czymprędzej pogonić\nCię z domu mojego</pre>");
echo("<pre>A on mnie tylko ziewną\nI tak urzedniczo gada:\nPrzybywam tu z $from i ja ci powiadam</pre>");
echo("<pre>I tu zaczyna bredzić urzędniczyna\nI swoje głupoty przede mną opisywać:\n$description</pre>");
}
?>
</body>
</html>