Formularze w połączeniu z PHP - tajna informacja po podaniu użytkownika i hasła
| DZIAŁANIE: |
|
Kod:

Ewentualne Objaśnienia:
Tutaj pokazałem Wam przykład logowania, po którym ( o ile podamy oczywiście poprawne dane ) pokazuje się nam jakaś 'tajna' zawartość. Kod generalnie wydaje się być sporych rozmiarów i być pogmatwany, ale tak naprawdę jest prosty. Nie ma tu prawie żadnych użytych rzeczy jakich jeszcze nie pokazywałem.
Omówmy go pokrótce :
Zmiennej $poprzedniadres przypisujemy wartość z tablicy $_SERVER[HTTP_REFERER] aby potem użyć jej w hiperłaczu do powrotu wstecz, to już znacie. Dalej mamy zadeklarowaną tablicę $hasla, w której mamy zawartych użytkowników oraz odpowiadające im hasła - taki sposób określania tablicy również już znacie. No i dalej mamy pierwszą instrukcję warunkową, która sprawdza czy podany jest ( wpisany w formularz ) użytkownik i hasło - jeśli tak. mamy kolejną instrukcję warunkową, która poprzez funkcję isset ( też już pokazywałem jak ona działa ) sprawdza czy w ogóle tablica ( zmienna ) $hasla z indeksem podanym przez nas w formularzu ( użytkownik ) istnieje. Funkcja isset jest zanegowana jak widać wykrzyknikiem, czyli sprawdza jakby czy ta tablica nie istnieje z takim indeksem. Jeżeli rzeczywiście nie istnieje pojawia się nam komunikat, że nie ma takiego użytkownika w bazie, tablicy.
Tutaj zwróćcie uwagę, że hasła oraz użytkownicy są zawarte w tym, że samym pliku co logowanie. Strona która pojawia się, a właściwie jej zawartość również jest zawarta w kodzie tejże strony. W przyszłości jednak będziemy robić inaczej - po logowaniu pojawiać się będzie zupełnie inna strona, natomiast wszelkie dane, czyli użytkowników i hasła będziemy ( głównie ze względów bezpieczeństwa ) przetrzymywać w bazie MySQL.
No ale jedzmy dalej. Czyli jak już mamy sprawdzone czy użytkownik istnieje w naszej tablicy $hasła, kolejna instrukcja warunkowa sprawdza czy podaliśmy dobre hasło. Jest to również prosto zrealizowane jak widać, sprawdzane jest czy wartość tablicy $hasła z indeksem ( kluczem ) takim jakiego podaliśmy użytkownika jest równa temu wpisowi, haśle w tablicy. Czyli jeżeli wpisaliśmy usera np. admin to sprawdza czy : $hasla[admin] == adminahaslo . Jeżeli tak pokazuje się nam wspaniała hehe tajna informacja, jeżeli nie pokazuje się nam info, że podaliśmy złe hasło dla użytkownika podanego przez nas. oraz link wstecz.
Dalej następuje już wyjście z tej "dużej" głównej instrukcji warunkowej if - i mamy jej kolejne pod warunki. Tam sprawdzaliśmy czy jest wpisany i użytkownik i hasło. Teraz dalej kolejne elseif sprawdzają pierw, jeżeli jest wpisany sam użytkownik pokazuje się informacja, że nie podaliśmy dla niego hasła ( o ile ten user istnieje tutaj go nie sprawdzamy, raczej nie ma takiej potrzeby skoro i tak hasło nie zostało podane ). Jeżeli ktoś by odziwo ( przez niechcący naciśnięcie TAB czy coś ) podał samo hasło to też pojawia się nam o tym informacja.
No i jeśli nic nie jest podane - wyświetlany jest formularz logowania.
Trzeba jeszcze zwrócić uwagę na jedną rzecz, popatrzmy na linie kodu :
print ("<TABLE><TR><TD> użytkownik : </TD><TD><INPUT TYPE=\"text\" NAME=\"uzytkownik\" VALUE=\"".$_POST['uzytkownik']."\"></td></tr>");
Jak wiadomo jest to linia, która wstawia do tabeli tekst 'uzytkownik :' oraz pole formularza - tekstowe. Jednak zwróćcie uwagę, że jest w nim parametr VALUE. Jest to domyślna wartość, która jak widać odpowiada tablicy $_POST, która przechowuje tekst jaki podaliśmy w formularzu ( jako użytkownika ). Wiadomo, że jak włączacie tą stronę to domyślnie nie jest nic wpisane w żadnym polu ( użytkownik oraz hasło ). Jednak dzięki temu wpisowi wartości domyślnej, zyskujemy to, że gdyby użytkownik wpisał samego użytkownika bez hasła to po wysłaniu formularza zostaje on ponownie wyświetlony, ale już z wpisaną nazwą użytkownika. Jest to dość wygodne prawda ? Jednak tutaj to nie działa ! Dlaczego ? A dlatego, że jak już wiecie dla przypadku kiedy użytkownik poda jedynie samą nazwę użytkownika zdefiniowaliśmy już działanie - czyli wyświetlenie komunikatu o braku podania hasła.
Ale spróbujcie w powyższym kodzie usunąć linie odpowiedzialne, za ten przypadek albo i za dwa czyli wpisanie tylko użytkownika lub hasła. Wtedy zobaczycie działanie i sens wpisywania wartości domyślnej w polu użytkownika.
Jak pewnie też zwróciliście uwagę tutaj używamy to przesyłu formularza metody POST, a co za tym idzie również tablicy $_POST. Jest tak oczywiście dlatego, aby podane hasła orz użytkownicy nie były wyświetlane w adresu na pasku przeglądarki ( oczywiście po podaniu danych ). Takie dane mogłyby być zapamiętane w historii przeglądarek jako cały link razem już właśnie z hasłem i nazwą użytkownika dla tego hasła.