Przekazywanie zmiennych - uwagi ogólne
Podstawą dynamiczności witryny WWW jest jej interakcja z
użytkownikiem. Tak więc użytkownik ma możliwoć wprowadzania
wartości, które zostaną przeanalizowane przez skrypt. Program
zachowa się odpowiednio do otrzymanych wartości.
Ponieważ analiza wartości wprowadzonych przez
użytkownika odbywa się po stornie serwera, potrzebne jest narzędzie
umożliwiające przesłanie zmiennych na serwer. Jednym z nich jest
formularz.
Budowa formularza (powtórzenie z HTML)
Pliki wyświetlające formularz mogą mieć
rozszerzenie html i nie muszą zawierać kodu PHP.
Klasyczny formularz składa się z następujących części
-
Deklaracja (np. <form
method="POST" action="plik.php">)
-
Pola (tekstowe, wyboru, obszar tekstowy),
-
Przycisk aktywujący wysłanie formularza (<input
type="submit">)
-
Zako?czenie formularza (</form>).
Formularz może wysyłać zmienne korzystając z
dwóch metod: POST i GET.
Metoda GET - służy
do przesyłania małej ilości zmiennych o krótkiej zawartości.
Nazwy zmiennych oraz ich wartości są widoczne w pasku adresu
stąd metoda ta nie nadaje się do przesyłania informacji niejawnych
(np. haseł) !!!!
Metoda POST - nie ma
ogranicze? co do ilości zmiennych oraz ich zawartości
(teoretycznie).
Przesyłane zmienne i ich wartości nie są umieszczane w widocznym
miejscu (np. pasek adresu), co utrudnia (tylko trochę :) ) ich
podejrzenie.
Umożliwia przesyłanie plików na serwer.
Minusem tej metody jest utrudniony powrót do strony za pomocą
klawisza "wstecz" przeglądarki.
Parametr action określa, do jakiego pliku
zostaną wysłane zmienne formularza.
Odebranie zmiennych wysyłanych przez formularz
Zmienne wysyłane z formularza należy odebrać z tablicy
superglobalnej.
Jeżeli formularz wysyłał zmienne metodą POST:
$nazwa_zmiennej = $_POST['nazwa_zmiennej'];
Jeżeli formularz wysyłał zmienne metodą GET:
$nazwa_zmiennej = $_GET['nazwa_zmiennej'];
Przystąpimy więc do zbudowania prostego
formularza oraz przygotujemy skrypt wyświetlający zmienną przesłaną
przez formularz.
Przygotujemy dwa pliki:
02_01.php
Rys. 2_1 - Przykład prostego formularza
z jednym polem tekstowym
Powyższy formularz przesyła zmienną o nazwie "nazwisko"
do pliku 02_01a.php z użyciem metody POST.
Przygotujmy więc skrypt, który odbierze wartość przekazanej
zmiennej, następnie wyświetli ją.
Rys. 2_2 - Skrypt odbierający zmienną z
formularza i wyświetlający jej wartość
ćwiczenie 2_1 - Prosty formularz przekazujący
wartość zmiennej z pola tekstowego
-
Należy umieścić na swoim koncie WWW plik
02_01.php i 02_01a.php (do pobrania tutaj
02_01.zip).
-
Po sprawdzeniu poprawności działania skryptu należy w pliku
02_01.php zmienić metodę przesyłania zmiennych z POST na GET.
Skrypt w pliku 02_01a.php należy tak
zmodyfikować, aby odebrana została zmienna przesyłana metodą
GET.
Należy wypełnić pole tekstowe i zaakceptować formularz. Czy coś
zmieniło się w pasku adresu?
Rys. 2_3 - Efekt w pasku adresu
przesyłania zmiennej metodą GET
Zadanie 1 - Test z wybranego przedmiotu
-
Należy przygotować pliki o nazwie
zadanie01.php i zadanie01a.php.
-
Pierwszy plik powinien wyświetlać formularz.
Tematem formularza jest test z przedmiotu, który Pani/Pan uczy.
Należy wykorzystać wszystkie rodzaje pól formularza (prócz pola
hasła). Pytania, w których odpowiedzi udzielane będą z
wykorzystaniem pól checkbox, powinny mieć kilka poprawnych
odpowiedzi.
-
Celem usprawnienia nawigacji strona
wyświetlająca efekt działania skryptu powinna być wyposażona w
link powrotu do głównej strony ćwicze? (index.html).
Rys. 2_4 - Przykład formularza
Rys. 2_5 - Przykład działania skryptu
sprawdzającego odpowiedzi
Należy przygotować powyższe
zadanie w taki sposób, aby nadawało się ono do wykorzystania na
lekcjach prowadzonych przez Panią/Pana. Wskazówki:
- Jeżeli użytkownik nie zaznaczy niektórych pól, nie zostanie
wygenerowana (zdefiniowana) odpowiednia zmienna. Gdy będziemy próbowali w pliku
zadanie01a.php odwołać się do tej zmiennej (np. wyświetlić jej
wartość), może pojawić się komunikat o błędzie. Warto więc po
zako?czeniu pracy zablokować generowanie informacji o błędach
(jak to zrobić - opisano w poprzednim rozdziale).
- Przykładowy (prosty w budowie, bez formatowania treści) test
z plikiem wyświetlającym odpowiedzi znajduje się
tutaj (02_02.zip).
|