0.1. LOGOWANIE DO SERWISU 1 0.1 Logowanie do serwisu Tematem przewodnim będzie stworzenie systemu logowania do strony. I to takiego systemu, który będzie łączył się z bazą danych MySQL. Jeśli zaś chodzi o bezpieczeństwo tworzonego systemu logowania, to póki co zabezpieczymy naszą witrynę przed tzw. wstrzykiwaniem SQL. Stworzymy grę internetową Osadnicy. Po zalogowaniu się na konto, użytkownik zobaczy swój profil. Wyjście ze strony nie spowoduje wylogowania się, jedynie zbyt długi czas, czyli po skończeniu się sesji to użytkownik zostanie automatycznie wylogowany lub gdy kliknie na przycisk wyloguj. 1. Otwórz folder Osadnicy a w nim plik index.php. Otwórzmy go i zakodujmy w UTF-8 Stwórz szablon strony i nazwij stronę np Gra. 2. Stwórz formularz do wpisania loginu, hasła i przycisku Zaloguj się. Oraz ustawimy miejsce przekierowania się do pliku zalogu.php <form action= z a l o g u j. php method= post > Login : <br /> <input type= t e x t name= l o g i n /> <br /> Hasło : <br /> <input type= password name= h a s l o /> <br /><br /> <input type= submit value= Zaloguj s i ę /> </form> 3. Tworzymy plik zaloguj.php. Wstawiamy kod php: $ l o g i n = $ POST [ login ] ; $haslo = $ POST [ haslo ] ; echo $ l o g i n. <br/> ; echo $haslo ; 4. Schemat działania: Sprawdzimy czy w bazie dane są prawdziwe. Aby to zrobić musimy wykonać następujące działanie:
2 a) W każdym pliku php, który ma być dostępny jedynie dla zalogowanych użytkowników (u nas pliku gra.php umieścimy na początku pliku ifa, który sprawdzi, czy użytkownik jest zalogowany. Jeżeli nie jest zalogowany, to przekierujemy do go index.php b) W pliku index.php, dodamy ifa, który sprawdzi, czy ktoś jest zalogowany. Jeśli jest, to wówczas przekierowujemy go do pliku gra.php, czyli do nowej strony głównej dostępnej jedynie dla zalogowanego gracza. c) W pliku skryptu logowania zaloguj.php (przetwarzającym podany login i hasło) umieścimy ifa, który sprawdzi, czy obie zmienne POST: login i hasło zostały ustawione. Jeśli nie istnieją takie zmienne, to przekierujemy użytkownika do formularza logowania index.php 5. Sprawdźmy, czy dane są odczytywane: Otwieramy stronę phpmyadmin. Tworzymy tabelę uzytkownicy a w niej kolumny: id, user, pass, email, drewno, kamien, zboze, dnipremium a następnie uzupełnijmy jeden wiersz. 6. Tworzymy plik connect.php, który posłuży połączeniu się z bazą. $host = mysql. cba. pl ; $db user = c i n i b a ; $db password = haslophp ; $db name = php nauka cba pl ; W pliku zaloguj.php na początku dopisujemy kod r e q u i r e o n c e connect. php ; W pliku zaloguj.php pobierzemy dane z bazy danych i sprawdzimy poprawność połączenia $ p o l a c z e n i e = @new mysqli ( $host, $db user, $db password, $db name ) ; i f ( $polaczenie >c o n n e c t e r r n o!=0) echo Error :. $ polaczenie >c o n n e c t e r r n o ; e l s e $ l o g i n = $ POST [ login ] ; $haslo = $ POST [ haslo ] ; echo Dobrze ; $polaczenie >c l o s e ( ) ; Zmień dane logowania do bazy i sprawdź poprawność wykonywanego kodu. 7. Sprawdź, czy dany użytkownik jest zapisany w bazie danych.
0.1. LOGOWANIE DO SERWISU 3 $ s q l= SELECT FROM uzytkownicy WHERE user = $login AND pass = $haslo ; i f ( $ r e z u l t a t=$ p olaczenie >query ( $ s q l ) ) $ i l u u s e r o w=$ r e z u l t a t >num rows ; $ w iersz=$ r e z u l t a t >f e t c h a s s o c ( ) ; $user=$ w i e r s z [ user ] ; $ r e z u l t a t >c l o s e ( ) ; e l s e 8. Tworzymy plik gra.php ze schematem hmtl. Wyświetlimy w nim profil użytkownika. echo <p>witaj. $user.! ; Zauważ, że nie odczytało nam loginu użytkownika, w innym pliku. W tym celu wykorzystamy sesje do zapamiętywania danych pomiędzy różnymi stronami. Php zapamiętuje zmienne tylko w obrębie jednego pliku. Zmienimy poprzedni kod następująco: $ i l u u s e r o w = $ r e z u l t a t >num rows ; $ w iersz = $ r e z u l t a t >f e t c h a s s o c ( ) ; $ SESSION [ id ] = $ w i e rsz [ id ] ; $ SESSION [ user ] = $ w i ersz [ user ] ; $ SESSION [ drewno ] = $wiersz [ drewno ] ; $ SESSION [ kamien ] = $ wiersz [ kamien ] ; $ SESSION [ zboze ] = $ wiersz [ zboze ] ; $ SESSION [ email ] = $ w i ersz [ email ] ; $ SESSION [ dnipremium ] = $ w i e rsz [ dnipremium ] ; $ r e z u l t a t >f r e e r e s u l t ( ) ; e l s e A na początku dokumentu index.php, zaloguj.php i gra.php dodajemy: s e s s i o n s t a r t ( ) ; Oraz zmieńmy wyświetlanie danych użytkownika w pliku gra.php echo <p>witaj. $ SESSION [ user ].!
4 [ <a href= logout. php >Wyloguj s i ę!</a> ]</p> ; echo <p><b>drewno</b>:. $ SESSION [ drewno ] ; echo <b>kamień</b>:. $ SESSION [ kamien ] ; echo <b>zboże</b>:. $ SESSION [ zboze ]. </p> ; echo <p><b>e mail </b>:. $ SESSION [ email ] ; echo <br/><b>dni premium</b>:. $ SESSION [ dnipremium ]. </p> ; Przetestuj kod. 9. Jeśli okazało się, że nie można się zalogować do dopiszemy do pliku zaloguj.php odpowiedni komunikat o złym loginie lub hasła a następnie przenieśmy użytkownika do formularza logowania. e l s e $ SESSION [ blad ] = <span style= c o l o r : red > Nieprawidłowy l o g i n lub hasło!</span> ; header ( Location : index. php ) ; który wyświetli się w pliku index.php pod formularzem. i f ( i s s e t ( $ SESSION [ blad ] ) ) echo $ SESSION [ blad ] ; W pliku zaloguj.php dopisujemy kod, który spowoduje usunięcie tekstu błędu, jeśli użytkownik pierwszy raz próbuje się zalogować. unset ( $ SESSION [ blad ] ) ; $ r e z u l t a t >f r e e r e s u l t ( ) ; 10. Wykonamy zapamiętanie loginu użytkownika pomiędzy stronami, mimo wejście po raz kolejny na stronę logowania. W tym celu stworzymy sesję zalogowany $ SESSION [ zalogowany ] = true ; $ w iersz = $ r e z u l t a t >f e t c h a s s o c ( ) ; $ SESSION [ id ] = $ w i e rsz [ id ] ;.... W pliku index.php dopisujemy s e s s i o n s t a r t ( ) ; i f ( ( i s s e t ( $ SESSION [ zalogowany ] ) ) && ( $ SESSION [ zalogowany ]== true ) )
0.1. LOGOWANIE DO SERWISU 5 e x i t ( ) ;