PHP Cz.3
Przekazywanie danych między stronami
Jeśli użytkownik musi podać jakieś dane (np. w celu dodania ich do bazy danych), to jedyną metodą jest pobranie ich ze standardowego formularza HTML.
W większości języków programowania należy używać dodatkowych bibliotek aby uzyskać dostęp do danych przesyłanych z formularza.
W PHP zostało to maksymalnie uproszczone. Wszystkie dane z formularza trafiają do odpowiednich tablic asocjacyjnych o nazwach kluczy takich, jak nazwy pól formularza. Jeśli w konfiguracji PHP włączona zostanie opcja register_globals (jest ona domyślnie wyłączona od wersji 4.2.0), to stworzone zostaną od razu zmienne o
nazwach takich jak nazwy pól formularza.
Formularze
Są dwie metody przekazywania parametrów do innych stron: metoda „GET” i metoda „POST”.
Metody GET używa się kiedy parametrów jest niewiele.
Dzieje się tak ponieważ parametry przekazuje się za pomocą adresu URL (np.
http://www.coś.pl/strona.php?parametr1=wartość1¶metr2=wartość2),
którego długość jest ograniczona.
Należy też pamiętać że parametry są widoczne w pasku adresu przeglądarki, więc tej metody nie należy używać jeśli przekazywane są np. hasła. Jak widać, sam adres
od parametrów oddzielany jest za pomocą znaku zapytania, a kolejne pary parametr=wartość za pomocą znaku ampersand („&”). Tą metodę można
wykorzystać także przy przekazywaniu parametrów przez odnośnik.
Metoda POST do przekazywania parametrów wykorzystuje nagłówek zapytania – wystarczy wiedzieć, że metoda ta umożliwia przekazywanie dużo większych parametrów, a także że parametrów nie widać w pasku przeglądarki.
Tablice $_GET i $_POST
Zależnie od metody, zmienne trafiają do odpowiednich tablic asocjacyjnych.
Dane przesłane metodą GET trafiają do tablicy $_GET a dane z metody POST to tablicy $_POST .
Tablice $_GET i $_POST są superglobalne. Oznacza to, że są widoczne w każdym miejscu kodu PHP bez konieczności użycia składni globals.
Odczytywanie wartości z formularza – plik HTML
<html>
<head>
<title> Test formularza </title>
</head>
<body>
<form action="dwa.php" method="GET">
Imię:
<input type=text name="im"/><br/>
Nazwisko:
<input type=text name="naz"/><br/>
Proszę o fakturę do zamówienia:
<input type=checkbox name="fak"/><br/>
Chcę zamówić:<br/>
<input type=radio name=zamow value="kola"/>Coca-colę<br>
<input type=radio name=zamow value="fanta"/>Fantę<br>
<input type=radio name=zamow value="sprite"/>Sprite'a<br>
<input type=submit value="Wyślij"/>
</form>
</body>
</html>
Odczytywanie wartości z formularza – plik PHP
<html>
<head>
<title> Wyniki </title>
</head>
<body>
Imię:
<?php echo $_GET['imie']?>
<br> Nazwisko:
<?php echo $_GET['nazwisko']?>
<br> Faktura:
<?php echo ($_GET['faktura'] == 'on' ? 'Tak' : 'Nie')?>
<br> Zamówienie:
case "kola":
echo "Coca-cola";
break;
case "fanta":
echo "Fanta";
break;
case "sprite":
echo "Sprite";
break;
}
?>
</body>