|
<<< Powrót
Formularze
Formularz w php jest tak ważny jak samo wypisywanie tekstu,
żeby nie powiedzieć że bardziej, bo przecież zwykły tekst możemy napisać
zwykłym HTML-em. Za pomocą formularza możemy przekazywać dane (zmienne)
pomiędzy stronami, wysyłać informacje tekstową do serwera i ją np.
zapisywać. Składnia formularza jest zawsze taka sama, zaczynamy od znacznika
<FORM> a kończymy na </FORM>. Wewnątrz znaczników wprowadzamy pola tekstowe,
pola wyboru radio, przyciski itp.. Na samym początku musimy określić
właściwości naszego formularza, robimy to poprzez ustawienie właściwości
action
oraz method.
|
Właściwość ACTION
|
określamy tutaj do jakiej strony będziemy przekazywać nasze dane
(zmienne). Może to być dowolna strona ze skryptem. Właściwość ustawiana
jest za pomocą adresu URI.
|
|
Właściwość METHOD
|
Możemy tu okteślić w jaki sposób będziemy przekazywać informacje, a mamy
do dyspozycji dwie metody:
POST
– Jest to metoda poufnego przekazywania danych. Informacje przekazywane
są ze strony na stronę w zmiennych zadeklarowanych w odpowiednich polach
formularza.
GET
– Jeśli zdecydujemy że naszą metodą przekazywania danych będzie metoda
GET to dane jakie będziemy chcieli przekazać do kolejnej strony będą
znajdowały się w adresie URI np. Jeśli zmienną gora wyślemy do strony
sudety.php a wartość ustawimy na 1422m to po zatwierdzeniu przyciskiem
formularza ukarze nam się strona o adresie:
http://localhost/sudety.php?gora=1422m
|
Dodatkowe właściwości
jakie możemy nadać naszemu formularzowi to:
·
enctype
·
accept-charset
·
accept
·
name
W
celu poznania szczegółowych opcji wyżej wymienionych właściwości lub
zapoznania się z możliwymi atrybutami formularza zachęcam do sięgnięcia po
jakiś podęcznik HTML-a lub na jakis dobry kurs albo dokumentacje.
Jak już
wcześniej wspomniałem, wewnątrz naszego formularza może znajdować się kilka
różnych pól w których możemy umieścić informację. Każde z tych pól
wprowadzamy do naszego formularza za pomocą elementu <INPUT>, a typy naszych
inputów mamy następujące:
·
TEXT
·
PASSWORD
·
CHECKBOX
·
RADIO
·
SUBMIT
·
RESET
·
FILE
·
HIDDEN
·
IMAGE
·
BUTTON
Dla
przećwiczenie powyższych elementów i dla zobrazowania struktury formularza
napiszmy następujący przykład:
<form
action="gora.php" method="GET">
plik:
<input type=file name=f0><br>
e-mail: <input type=text name=f1><br>
hasło: <input type=password name=f2><br>
<input type=checkbox name=f3 value=1>Jestem użytkownikiem "Sudety.pl"<br>
<input type=checkbox name=f4 value=1>zgadzam się na przetwarzanie moich
danych<br>
<input type=radio name=f5 value="mala">Mała<br>
<input type=radio name=f5 value="duza">Duża<br>
<input type=radio name=f5 value="srednia">Średnia<br>
<input type=submit value="Wyślij">
<input type=reset><br>
</form>

Tak
skonstruowany formularz przekaże nasze dane do następnej strony czyli
gora.php. Oczywiście skrypt który będzie odbierał dane z formularza musi być
odpowiednio przygotowany. Można to zrobić następująco:
gora.php
<?php
print
"twoje dane:<br><br>\n\n\t";
//pobieranie pierwszej zmiennej
print
$_GET['f0'];
print "<br>\n\t";
//pobieranie drugiej zmiennej
print $_GET['f1'];
print "<br>\n\t";
//pobieranie trzeciej zmiennej
print
$_GET['f2'];
print "<br>\n\t";
//pobieranie czwartej zmiennej
print $_GET['f3'];
print "<br>\n\t";
//pobieranie piątej zmiennej
print
$_GET['f4'];
print "<br>\n\t";
//pobieranie szóstej zmiennej
print $_GET['f5'];
print "<br>\n\t";
print
"<br><br>zostały wysłane...\n\n\t";
?>
Odebraliśmy i
wypisaliśmy dane w formie w jakiej zostały wysłane z formularza. Dla kogoś
kto korzystałby z naszego skryptu, sposób w jaki wypisaliśmy dane nie jest
do końca czytelny dlatego musimy zamieścić w skrypcie góra.php interpretator
który jaśniej przedstawi nam to co właśnie wysłaliśmy. Do interpretowania
danych nadesłanych z formularza możemy używać każdej funkcji, jednak jest
funkcja która szczególnie przydaje się przy odbieraniu danych. Jest to
funkcja „empty” i służy do sprawdzania czy zmienna z której mamy zamiar
korzystać w ogóle istnieje i czy nie jest ona pusta. Napiszmy zatem skrypt który będzie nam sprawdzał
w pierwszej kolejności czy istnieje zmienna a później będzie tą zmienną
odpowiednio interpretował:
<?php
print
"twoje dane:<br><br>\n\n\t";
//pobieranie pierwszej zmiennej
if (!empty($_GET['f0']))
//jeśli $_GET['f0']) jest NIE puste
{
print "dołączono plik: \n\t";
print $_GET['f0'];
print "<br>\n\t";
}
//pobieranie drugiej zmiennej
if (!empty($_GET['f1']))
//jeśli $_GET['f1']) jest NIE puste
{
print "Użytkownik: \n\t";
print $_GET['f1'];
print "<br>\n\t";
}
//pobieranie trzeciej zmiennej
if (!empty($_GET['f2']))
{
print "hasło: \n\t";
print $_GET['f2'];
print "<br>\n\t";
}
//pobieranie czwartej zmiennej
if (!empty($_GET['f3']))
{
print "Użytkownik serwisu 'sudety.pl'";
print
"<br>\n\t";
}else
{
print "nie jestem użytkownikiem serwisu";
print "<br>\n\t";
}
//pobieranie piątej zmiennej
if (empty($_GET['f4']))
//jeśli $_GET['f4']) jest puste
{
print "Nie zgadzam się na przetwarzanie moich danych";
print
"<br>\n\t";
}else
{
print "zgadzam się na przetwarzanie moich danych";
print "<br>\n\t";
}
//pobieranie szóstej zmiennej
if (!empty($_GET['f5']))
{
print "Kategoria góry: \n\t";
if ($_GET['f5'] == "duza") print "Duża";
if ($_GET['f5'] == "mala") print "Mała";
if ($_GET['f5'] == "srednia") print "Średnia";
print "<br>\n\t";
}
else print "nie określono kategorii";
print "<br><br>zostały wysłane...\n\n\t";
?>
Jak do tej pory zajmowaliśmy się formularzami których dane wysyłaliśmy za pomocą metody GET. Nadszedł czas aby przyjrzeć się drugiej z metod POST. Za każdym razem kiedy wysyłaliśmy jakieś informacje za pomocą naszego formularza, w pasku adresu naszej strony pojawiał się dziwny
długi "szyfr". Składał on się z nazwy naszego hosta, nazwy naszej strony php i z ciągu znaków zaczynającego się od znaku "?". Ten ciąg znaków to własnie dane jakie wysyłaliśmy do następnej strony. Dane są przekazywane w formie dosyć czytelnej, bo dla każdej zmiennej wypisywana jest jej nazwa oraz po znaku "=" wartość.
Każda następna zmienna zaczyna się "&" - łącznik danych. np.:
http://localhost/gora.php?f0=Michał&f1=dd45&f2=&f3=1&f4=1&f5=srednia
Na podanym przykładzie widać jakie dane wpisaliśmy w formularzu. O ile czasami jest to bardzo wygodne to w tym przypadku nie jest to po prostu bezpieczne. Jednym z naszych pól było pole "hasło", pole to wymaga specjalnego traktowania. Jeśli wyślemy dane z hasłem za pomocą metody GET to istnieje możliwość że ktoś może poznać nasze
poufne dane i korzystać z naszych usług bez naszej wiedzy. Trzeba bowiem pamiętać że system Windows zapamiętuje adresy przeglądanych stron. Jak zatem zrobić bezpieczną stronę która będzie mogła nam służyć np. do logowania użytkowników? Stwórzmy stronę login.php:
<form action=form.php method=post>
użytkownik: <input name='log' type=text ><br>
hasło: <input name='pass' type=password>
<br><br>
<input type=submit walue="wejdź">
</form> Oraz skrypt form na której umieszczamy wszystkie usługi użytkownika:
<?php
if (!empty($_POST['log']))
{
if (!empty($_POST['pass']))
{
if (($_POST['log'] == "michal") && ($_POST['pass'] == "bbx3"))
{
print "Zalogowałeś się prawidłowo<br><br>Witamy w serwisie!";
}else print "Nie ma takiego użytkownika lub hasło jakie wprowadziłeś jest
nieprawidłowe<br><br>Prosimy spróbuj ponownie.";
}else print "Nie wpisałeś hasła!";
}else print "Żeby wejść do serwisu musisz wpisać swój login a póżniej
hasło!";
?> Za pomocą formularza login wprowadzamy nasze poufne dane a skrypt form.php (czyli ten drugi) analizuje je i wyświetla odpowiedni komunikat. Naszych danych nigdzie nie widać a metoda przekazywania informacji jest bardzo podobna do metody GET. Na wypadek gdyby ktoś się nie dopatrzył się jaki
jest prawidłowy login i hasło i nie może się prawidłowo zalogować podaję: login: michal, hasło: bbx3.
|