Czołem! Dzisiaj zrobimy prosty system logowania. Dla maksymalnego uproszczenia wrzucam kod php z html oraz nie używam tutaj połączenia do bazy danych. Uwaga, kodzik nie jest napisany obiektowo oraz jeżeli bolą Cię oczy od patrzenia na html + php, nie trać czasu 😉 Dodatkowo w najbardziej problematycznych miejscach dorzucam komenatrze bezpośrednio w kodzik. Częstuj się śmiało!
Zaczynamy!
Potrzebujemy stronę logowania na której będziemy mogli wpisać swój login i hasło. Utwórz plik index.php i wklep poniższy kod:
<!DOCTYPE html> <html> <head> <title>Proste logowanie w PHP</title> </head> <body> <h1>Proste logowanie w PHP</h1> <form method="POST" action="login.php"> <label for="username">Nazwa użytkownika:</label> <input type="text" name="username" id="username"><br> <label for="password">Hasło:</label> <input type="password" name="password" id="password"><br> <input type="submit" name="submit" value="Zaloguj mnie"> </form> </body> </html>
Gdy użytkownik uzupełni dane i kliknie Zaloguj mnie, nastąpi przekierowanie do pliku login.php.
Plik login.php jest odpowiedzialny za zweryfikowanie informacji czy użytkownik powinien otrzymać dostęp czy też nie. Jeżeli autoryzacja przebiegła pomyślnie, robimy przekierowanie do pliku welcome.php w przeciwnym wypadku wyświetlamy ponownie formularz logowania (dla uproszczenia kod dodatkowo umieszczony na samym dole).
<?php session_start(); // Przykładowe dane użytkowników (w praktyce należy je przechowywać w bazie danych) // dla uproszczenia, wrzućmy je do tablicy $users = array( "user1" => "password1", "user2" => "password2", "user3" => "password3" ); // Sprawdzenie, czy użytkownik przesłał formularz if (isset($_POST['submit'])) { $username = $_POST['username']; $password = $_POST['password']; // Sprawdzenie, czy dane użytkownika są poprawne if (isset($users[$username]) && $users[$username] == $password) { $_SESSION['username'] = $username; header("Location: welcome.php"); exit; } else { $error = "Nieprawidłowa nazwa użytkownika lub hasło."; } } ?> // Ponownie wyświetlamy formularz <!DOCTYPE html> <html> <head> <title>Proste logowanie</title> </head> <body> <h1>Proste logowanie</h1> // Jeżeli nie mamy dostępu, wyświetlamy błąd <?php if(isset($error)) { echo '<p style="color: red;">' . $error . '</p>'; } ?> <form method="POST" action="login.php"> <label for="username">Nazwa użytkownika:</label> <input type="text" name="username" id="username"><br> <label for="password">Hasło:</label> <input type="password" name="password" id="password"><br> <input type="submit" name="submit" value="Zaloguj się"> </form> </body> </html>
Mamy to! Potrzebujemy jeszcze zabezpieczyć strony, które będą dostępne tylko dla użytkowników zalogowanych poprzez dodanie prostego ifa którego zobaczycie poniżej w pliku welcome.php.
<?php session_start(); // Sprawdzenie, czy użytkownik jest zalogowany if(!isset($_SESSION['username'])) { header("Location: index.php"); exit; } ?> <!DOCTYPE html> <html> <head> <title>Witaj!</title> </head> <body> <h1>Witaj, <?php echo $_SESSION['username']; ?>!</h1> <p>Logowanie powiodło się. Brawo to Twój prosty system logowania w PHP</p> <p><a href="logout.php">Wyloguj mnie</a></p> </body> </html>
OO wygląda to całkiem nieźle. Hmm a co jeśli użytkownik chce się wylogować? Nic prostszego! Stwórz plik logout.php i umieść w nim poniższy kod:
<?php session_start(); // Usunięcie danych sesji session_unset(); session_destroy(); // Przekierowanie użytkownika na stronę logowania header("Location: index.php"); exit; ?>
Gotowe!
Przyprawiaj według uznania i swoich możliwości. Przestawiaj, rozdzielaj, twórz obiekty i pochwal się swoim dziełem wrzucając w komenatrz link do Twojego repo! Pokaż światu swój blask.
NIE DZIAŁA TWÓJ KOD TEMPY KIJU
PEŁNO BŁĘDÓW
NP
nie zamknięcie inputa w formularzu i wymieniać mógł bym dalej jak
KUP SOBIE JAKAŚ KSIĄŻKE A DOPIERO PÓŹNIEJ RÓB TUTORIALE
funkcja sprawdzająca pownrpaość maila całkiem nie potrzebna jeden if w zupełności wystarczy do tego lepiej skorzystać gotowego rozwiązania w postaci filter_var z użyciem FILTER_VALIDATE_EMAIL, reszta nawet spoko.
I’ⅼⅼ mmediately seize yоhr rss ɑs I can noot
find your e-maіl subscription link or e-newsletter service.
Ⅾo you have any? Please allo me know so that I mmay just
subscribe.Thanks.
[…] 6. Proste logowanie w php. – Lubisz flat white? […]