Bezbożna rejestracja autoryzacyjna php

10.05.2015 Romczik

Dobry dzień. W tym artykule posłużymy się przykładem analizy rejestracji użytkowników w . Następnie aktywuj użytkownika, potwierdzając jego adres e-mail. I wreszcie autoryzacja użytkownika w . Jednak tylko aktywni użytkownicy powinni być autoryzowani.

Pierwszą rzeczą, którą zrobimy, będzie utworzenie kontrolera i widoku do rejestracji.

Tworzenie formularza rejestracyjnego

Przejdź do katalogu z szablonami zasobów i utwórz w nim podkatalog auth. Teraz w folderze auth utworzymy plik Register.blade.php z następującym kodem:

Rejestracja

((--Błędy--)) @if ($errors->has()) ×
    @foreach($errors->all() jako $error)
  • ((($błąd)))
  • @endforeach
@endif (!! csrf_field() ! Email Пароль Повторите пароль Отправить !}

Nie będę wyjaśniał powyższego kodu, tutaj wszystko jest jasne.

App/Http/Controllers/Auth/AuthController.php

Zastąpimy jedynie metody kontrolera AuthController.php. Aby wyświetlić formularz rejestracyjny, istnieje metoda getRegister. Nie dotykamy tej metody.

Przejdźmy teraz do tras. Otwórz plik:

I zdefiniuj drogę do naszej metody:

Route::get("auth/register", "Auth\AuthController@getRegister");

Otwórzmy teraz naszą aplikację w przeglądarce. Świetnie, widzimy formularz rejestracyjny.

Rejestracja użytkownika w

Od razu zdefiniujmy trasę rejestracji użytkownika. Przejdźmy do pliku:

App/Http/Controllers/routes.php

I dodaj następującą trasę:

Route::post("auth/register", "Auth\AuthController@postRegister");

Utwórzmy teraz tabelę do przechowywania użytkowników. Istnieje już migracja dla tej tabeli, ale nie jest ona dla nas odpowiednia. Zmieńmy to. Przejdźmy do pliku:

Baza danych/migracje/2014_10_12_create_users_table.php

I zmieńmy kod:

W moim przypadku wygląda to tak:

Zapisz bd.php .
Świetnie! Mamy tabelę w bazie danych i połączenie z nią. Teraz możesz przystąpić do tworzenia strony, na której użytkownicy będą zostawiać swoje dane.

3. Utwórz plik reg.php z zawartością (wszystkie komentarze w środku):



Rejestracja


Rejestracja


Twój login:




Twoje hasło:








4. Utwórz plik, który wprowadzi dane do bazy danych i zapisze użytkownika. save_user.php (komentarze w środku):

5. Teraz nasi użytkownicy mogą się zarejestrować! Następnie musisz utworzyć „drzwi” dla już zarejestrowanych użytkowników, aby mogli wejść na stronę. indeks.php (komentarze w środku):




Strona główna


Strona główna


Twój login:


Twoje hasło:






Rejestr



OK, już wszystko! Lekcja może być nudna, ale bardzo przydatna. Pokazana jest tu tylko idea rejestracji, potem można ją ulepszyć: dodać zabezpieczenia, wygląd, pola danych, wczytać awatary, wylogować się z konta (w tym celu wystarczy po prostu zniszczyć zmienne z sesji z funkcją unset) oraz Wkrótce. Powodzenia!

Sprawdziłem wszystko, działa poprawnie!

W tym artykule dowiesz się, jak utworzyć formularz rejestracji i logowania przy użyciu HTML, JavaScript, PHP i MySql. Formularze takie stosowane są niemal na każdej stronie internetowej, niezależnie od jej typu. Tworzone są z myślą o forum, sklepie internetowym, portalach społecznościowych (takich jak Facebook, Twitter, Odnoklassniki) i wielu innych typach serwisów.

Jeśli masz witrynę internetową na komputerze lokalnym, mam nadzieję, że masz już zainstalowany i działający serwer lokalny. Bez tego nic nie będzie działać.

Tworzenie tabeli w bazie danych

Aby zaimplementować rejestrację użytkowników, potrzebujemy przede wszystkim Bazy Danych. Jeśli już go masz, to świetnie, w przeciwnym razie musisz go stworzyć. W artykule szczegółowo wyjaśniam, jak to zrobić.

I tak mamy bazę danych (w skrócie DB), teraz musimy stworzyć tabelę użytkownicy w którym będziemy dodawać naszych zarejestrowanych użytkowników.

W artykule wyjaśniłem również, jak utworzyć tabelę w bazie danych. Przed utworzeniem tabeli musimy określić, jakie pola będzie ona zawierać. Pola te będą odpowiadać polom z formularza rejestracyjnego.

Pomyśleliśmy więc, wyobraziliśmy sobie, jakie pola miałby nasz formularz i stworzyliśmy tabelę użytkownicy z tymi polami:

  • ID- Identyfikator. Pole ID Każda tabela w bazie danych powinna to mieć.
  • imię- Aby zapisać nazwę.
  • nazwisko- Aby zachować nazwisko.
  • e-mail- Aby zapisać adres pocztowy. Jako loginu będziemy używać adresu e-mail, dlatego pole to musi być unikalne, czyli posiadać indeks UNIQUE.
  • status_e-maila- Pole wskazujące, czy wiadomość została potwierdzona, czy nie. Jeśli wiadomość zostanie potwierdzona, będzie miała wartość 1, w przeciwnym razie wartość będzie wynosić 0.
  • hasło- Aby zapisać hasło.


Jeśli chcesz, aby Twój formularz rejestracyjny zawierał jeszcze inne pola, możesz dodać je również tutaj.

To wszystko, nasz stół użytkownicy gotowy. Przejdźmy do następnego etapu.

Połączenie z bazą danych

Stworzyliśmy bazę danych, teraz musimy się z nią połączyć. Połączymy się za pomocą rozszerzenia PHP MySQLi.

W folderze naszej witryny utwórz plik o nazwie dbconnect.php i napisz w nim następujący skrypt:

Ten plik dbconnect.php będzie musiał być podłączony do procedur obsługi formularzy.

Zwróć uwagę na zmienną $adres_witryny, tutaj wskazałem nazwę mojej witryny testowej, nad którą będę pracować. Podaj odpowiednio nazwę swojej witryny.

Struktura witryny

Przyjrzyjmy się teraz strukturze HTML naszej witryny.

Nagłówek i stopkę strony przeniesiemy do osobnych plików, nagłówek.php I stopka.php. Umieścimy je na wszystkich stronach. Mianowicie na stronie głównej (plik indeks.php), do strony z formularzem rejestracyjnym (plik form_register.php) oraz do strony z formularzem autoryzacji (plik form_auth.php).

Blokuj naszymi linkami, rejestracja I upoważnienie, dodaj je do nagłówka witryny, aby były wyświetlane na wszystkich stronach. Jeden link będzie prowadził do strony z formularzem rejestracyjnym (plik form_register.php), a drugi do strony z formularzem autoryzacji (plik form_auth.php).

Zawartość pliku header.php:

Nazwa naszej witryny

W rezultacie nasza strona główna wygląda następująco:


Oczywiście Twoja witryna może mieć zupełnie inną strukturę, ale nie jest to teraz dla nas istotne. Najważniejsze jest to, że istnieją linki (przyciski) do rejestracji i autoryzacji.

Przejdźmy teraz do formularza rejestracyjnego. Jak już rozumiesz, mamy to w aktach form_register.php.

Przejdź do Bazy Danych (w phpMyAdmin), otwórz strukturę tabeli użytkownicy i zobacz, jakich pól potrzebujemy. Oznacza to, że potrzebujemy pól do wpisania imienia i nazwiska, pola do wpisania adresu pocztowego (Email) oraz pola do wpisania hasła. A ze względów bezpieczeństwa dodamy pole do wpisania captcha.

Na serwerze w wyniku przetwarzania formularza rejestracyjnego mogą wystąpić różne błędy, przez które użytkownik nie będzie mógł się zarejestrować. Dlatego, aby użytkownik zrozumiał dlaczego rejestracja się nie powiodła, konieczne jest wyświetlenie komunikatów o tych błędach.

Przed wyświetleniem formularza dodaj blok wyświetlający komunikaty o błędach z sesji.

I jeszcze jedno jeśli użytkownik jest już autoryzowany i z ciekawości przechodzi bezpośrednio na stronę rejestracji wpisując w pasku adresu przeglądarki adres_witryny/form_register.php, wówczas w tym przypadku zamiast formularza rejestracyjnego wyświetlimy nagłówek informujący, że jest on już zarejestrowany.

Ogólnie kod pliku form_register.php mamy to:

Jesteś już zarejestrowany

W przeglądarce strona z formularzem rejestracyjnym wygląda następująco:


Korzystając z wymaganego atrybutu, wszystkie pola stały się obowiązkowe.

Zwróć uwagę na kod formularza rejestracyjnego, w którym wyświetla się captcha:


Ścieżkę do pliku podaliśmy w wartości atrybutu src dla obrazu captcha.php, który generuje tę captcha.

Spójrzmy na kod pliku captcha.php:

Kod jest dobrze skomentowany, więc skupię się tylko na jednym punkcie.

Wewnątrz funkcji obrazTtfTekst(), określona jest ścieżka do czcionki verdana.ttf. Aby więc captcha działała poprawnie, musimy utworzyć folder czcionki i umieść tam plik czcionki verdana.ttf. Możesz go znaleźć i pobrać z Internetu lub pobrać z archiwum z materiałami tego artykułu.

Skończyliśmy ze strukturą HTML, czas działać dalej.

Sprawdzanie ważności poczty e-mail za pomocą jQuery

Każdy formularz wymaga sprawdzenia poprawności wprowadzonych danych, zarówno po stronie klienta (za pomocą JavaScript, jQuery), jak i po stronie serwera.

Szczególną uwagę musimy zwrócić na pole E-mail. Bardzo ważne jest, aby wprowadzony adres pocztowy był ważny.

Dla tego pola wejściowego ustawiamy typ wiadomości e-mail (type="email"), co nieco ostrzega nas przed nieprawidłowymi formatami. Ale to nie wystarczy, bo poprzez inspektora kodu, który udostępnia nam przeglądarka, w łatwy sposób możemy zmienić wartość atrybutu typ Z e-mail NA tekst i tyle, nasz czek nie będzie już ważny.


I w tym przypadku musimy przeprowadzić bardziej wiarygodną kontrolę. W tym celu skorzystamy z biblioteki jQuery z JavaScript.

Aby połączyć bibliotekę jQuery, w pliku nagłówek.php pomiędzy tagami , przed tagiem zamykającym , dodaj tę linię:

Zaraz po tej linii dodamy kod weryfikacyjny adresu e-mail. Tutaj dodamy kod pozwalający sprawdzić długość wprowadzonego hasła. Jego długość musi wynosić co najmniej 6 znaków.

Za pomocą tego skryptu sprawdzamy poprawność wprowadzonego adresu e-mail. Jeśli użytkownik wprowadził nieprawidłowy adres e-mail, wyświetlimy komunikat o błędzie i wyłączymy przycisk przesyłania formularza. Jeśli wszystko jest w porządku, usuwamy błąd i aktywujemy przycisk przesyłania formularza.

Skończyliśmy więc z walidacją formularzy po stronie klienta. Teraz możemy wysłać go na serwer, gdzie również dokonamy kilku kontroli i dodamy dane do bazy danych.

Rejestracja Użytkownika

Formularz przesyłamy do pliku w celu przetworzenia zarejestruj się.php, metodą POST. Nazwa tego pliku obsługi jest określona w wartości atrybutu działanie. Sposób wysyłania jest określony w wartości atrybutu metoda.

Otwórz ten plik zarejestruj się.php i pierwszą rzeczą, którą musimy zrobić, to napisać funkcję uruchamiania sesji i podłączyć utworzony wcześniej plik dbconnect.php(W tym pliku wykonaliśmy połączenie z bazą danych). A także od razu zadeklarujmy komórki komunikaty_błędów I wiadomości_sukcesu w globalnej tablicy sesji. W komunikaty o błędach będziemy rejestrować wszystkie komunikaty o błędach, które wystąpią podczas przetwarzania formularza oraz w wiadomości_sukcesu, nagramy radosne wiadomości.

Zanim przejdziemy dalej, musimy sprawdzić, czy formularz w ogóle został przesłany. Osoba atakująca może sprawdzić wartość atrybutu działanie z formularza i dowiedz się, który plik przetwarza ten formularz. Być może wpadnie na pomysł, aby przejść bezpośrednio do tego pliku, wpisując następujący adres w pasku adresu przeglądarki: http://adres_strony/register.php

Musimy więc sprawdzić, czy w globalnej tablicy POST znajduje się komórka, której nazwa odpowiada nazwie naszego przycisku „Zarejestruj się” z formularza. W ten sposób sprawdzamy, czy został kliknięty przycisk „Zarejestruj się”.

Jeśli osoba atakująca spróbuje przejść bezpośrednio do tego pliku, otrzyma komunikat o błędzie. Przypomnę, że zmienna $address_site zawiera nazwę serwisu i została ona zadeklarowana w pliku dbconnect.php.

Wartość captcha w sesji została dodana w pliku podczas jej generowania captcha.php. Dla przypomnienia pokażę Ci jeszcze raz ten fragment kodu z pliku captcha.php, gdzie do sesji dodawana jest wartość captcha:

Przejdźmy teraz do samej weryfikacji. W pliku zarejestruj się.php, wewnątrz bloku if, gdzie sprawdzamy, czy został kliknięty przycisk „Zarejestruj się”, czy raczej gdzie jest wskazany komentarz „” // (1) Miejsce na następny fragment kodu"piszemy:

//Sprawdź odebrane captcha //Przytnij spacje na początku i na końcu linii $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //Porównaj otrzymaną wartość z wartością z sesji. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Jeżeli captcha jest niepoprawna to wracamy użytkownika na stronę rejestracji i tam wyświetlimy mu komunikat o błędzie, że wprowadził błędne captcha .$komunikat o błędzie = "

Błąd! Wpisałeś złe captcha

"; // Zapisz komunikat o błędzie w sesji. $_SESSION["error_messages"] = $error_message; // Wróć użytkownika do strony rejestracji header("HTTP/1.1 301 Przeniesiono na stałe"); header("Lokalizacja: " .$address_site ."/form_register.php"); //Zatrzymaj skrypt exit(); ) // (2) Miejsce na kolejny fragment kodu )else( //Jeśli captcha nie została przekazana lub jest pusta, wyjście („

Błąd! Nie ma kodu weryfikacyjnego, czyli kodu captcha. Możesz przejść do strony głównej.

"); }

Następnie musimy przetworzyć otrzymane dane z tablicy POST. Przede wszystkim musimy sprawdzić zawartość globalnej tablicy POST, czyli czy znajdują się tam komórki, których nazwy odpowiadają nazwom pól wejściowych z naszego formularza.

Jeżeli komórka istnieje to odcinamy spacje na początku i na końcu wiersza tej komórki, w przeciwnym razie przekierowujemy użytkownika z powrotem na stronę z formularzem rejestracyjnym.

Następnie po przycięciu spacji dodajemy linijkę do zmiennej i sprawdzamy czy zmienna jest pusta, jeśli nie jest pusta to przechodzimy dalej, w innym wypadku przekierowujemy użytkownika z powrotem na stronę z formularzem rejestracyjnym.

Wklej ten kod we wskazane miejsce” // (2) Miejsce na następny fragment kodu".

/* Sprawdź, czy w tablicy globalnej $_POST są wysyłane dane z formularza i zapakuj przesłane dane w zwykłe zmienne.*/ if(isset($_POST["first_name"]))( //Przytnij spacje od początku i koniec łańcucha $first_name = trim($_POST["first_name"]); //Sprawdź, czy zmienna jest pusta if(!empty($first_name))( // Dla bezpieczeństwa przekonwertuj znaki specjalne na encje HTML $first_name = htmlspecialchars($first_name, ENT_QUOTES) ; )else( // Zapisz komunikat o błędzie w sesji. $_SESSION["komunikaty_błędów"] .= "

Wpisz swoje imię

Brak pola nazwy

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); ) if( isset($_POST["last_name"]))( //Przytnij spacje od początku i końca linii $last_name = trim($_POST["last_name"]); if(!empty($last_name)) ( // Dla bezpieczeństwa przekonwertuj znaki specjalne na encje HTML $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Zapisz komunikat o błędzie w sesji. $_SESSION["komunikaty o błędach"] .= "

Proszę podać swoje nazwisko

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); ) )else ( // Zapisz komunikat o błędzie w sesji. $_SESSION["komunikaty o błędach"] .= "

Brak pola nazwiska

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); ) if( isset($_POST["email"]))( //Przytnij spacje na początku i na końcu linii $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) Lokalizacja kodu do sprawdzania formatu adresu e-mail i jego unikalności )else( // Zapisz komunikat o błędzie w sesji. $_SESSION["error_messages"] .= "

Wprowadź swój email

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); ) )else ( // Zapisz komunikat o błędzie w sesji. $_SESSION["komunikaty o błędach"] .= "

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); ) if( isset($_POST["hasło"]))( //Przytnij spacje na początku i na końcu łańcucha $password = trim($_POST["hasło"]); if(!empty($hasło)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //Zaszyfruj hasło $password = md5($password.top_secret"); )else( // Zapisz komunikat o błędzie w sesji. $_SESSION["komunikaty o błędach"] .= "

Wprowadź hasło

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); ) )else ( // Zapisz komunikat o błędzie w sesji. $_SESSION["komunikaty o błędach"] .= "

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); ) // (4) Miejsce na kod dodania użytkownika do bazy danych

Szczególnie ważne jest pole e-mail. Musimy sprawdzić w bazie format otrzymanego adresu pocztowego i jego unikalność. To znaczy, czy jest już zarejestrowany użytkownik o tym samym adresie e-mail?

We wskazanym miejscu” // (3) Lokalizacja kodu w celu sprawdzenia formatu adresu pocztowego i jego unikalności" dodaj następujący kod:

//Sprawdź format otrzymanego adresu e-mail, używając wyrażenia regularnego $reg_email = "/^**@(+(*+)*\.)++/i"; //Jeśli format otrzymanego adresu e-mail nie jest zgodny z wyrażeniem regularnym if(!preg_match($reg_email, $email))( // Zapisz komunikat o błędzie w sesji. $_SESSION["error_messages"] .= "

Wpisałeś nieprawidłowy adres e-mail

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); ) // Sprawdzamy, czy taki adres jest już w bazie $result_query = $mysqli->query("WYBIERZ `email` Z `użytkowników` GDZIE `email`=".$email."""); / /Jeśli liczba otrzymanych wiadomości jest dokładnie w jednym wierszu, co oznacza, że ​​użytkownik o tym adresie e-mail jest już zarejestrowany if($result_query->num_rows == 1)( //Jeśli otrzymany wynik nie jest fałszywy if(($row = $result_query->fetch_assoc()) != false) ( // Zapisz komunikat o błędzie w sesji. $_SESSION["error_messages"] .= "

Użytkownik o tym adresie e-mail jest już zarejestrowany

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); )else( // Zapisz komunikat o błędzie do sesji $_SESSION["komunikaty o błędach"] .= "

Błąd w zapytaniu do bazy danych

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); ) /* zamknięcie wyboru */ $ result_query->close(); //Zatrzymaj skrypt exit(); ) /* zamknięcie zaznaczenia */ $result_query->close();

I tak mamy już za sobą wszystkie sprawdzenia, czas dodać użytkownika do bazy danych. We wskazanym miejscu” // (4) Miejsce na kod dodania użytkownika do bazy danych" dodaj następujący kod:

//Zapytanie o dodanie użytkownika do bazy danych $result_query_insert = $mysqli->query("WSTAW DO `użytkowników` (imię, nazwisko, adres e-mail, hasło) WARTOŚCI ("".$pierwsze imię."", "".$nazwisko ." ", ".$e-mail.", ".$hasło."")"); if(!$result_query_insert)( // Zapisz komunikat o błędzie w sesji. $_SESSION["komunikaty o błędach"] .= "

Błąd w żądaniu dodania użytkownika do bazy danych

"; //Powrót użytkownika do strony rejestracji header("HTTP/1.1 301 przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_register.php"); //Zatrzymaj wyjście skryptu(); )else( $_SESSION["wiadomości_success"] = "

Rejestracja zakończona pomyślnie!!!
Teraz możesz zalogować się przy użyciu swojej nazwy użytkownika i hasła.

"; //Wyślij użytkownika na stronę autoryzacji header("HTTP/1.1 301 Przeniesiony na stałe"); header("Lokalizacja: ".$address_site."/form_auth.php"); ) /* Zakończenie żądania */ $ result_query_insert->close(); //Zamknij połączenie z bazą danych $mysqli->close();

Jeżeli w żądaniu dodania użytkownika do bazy wystąpił błąd, dodajemy komunikat o tym błędzie do sesji i odsyłamy użytkownika na stronę rejestracji.

W przeciwnym razie, jeśli wszystko poszło dobrze, również dodajemy wiadomość do sesji, ale tym razem jest ona przyjemniejsza, a mianowicie informujemy użytkownika, że ​​rejestracja przebiegła pomyślnie. I przekierowujemy go na stronę z formularzem autoryzacji.

Skrypt sprawdzający format adresu e-mail i długość hasła znajduje się w pliku nagłówek.php, więc będzie dotyczyć także pól z tego formularza.

Sesja jest również uruchamiana w pliku nagłówek.php, więc w pliku form_auth.php Nie ma potrzeby rozpoczynania sesji, ponieważ otrzymamy błąd.


Jak już mówiłem, tutaj działa również skrypt sprawdzający format adresu e-mail i długość hasła. Dlatego jeśli użytkownik wprowadzi błędny adres e-mail lub krótkie hasło, natychmiast otrzyma komunikat o błędzie. Przycisk wejść stanie się nieaktywny.

Po naprawieniu błędów przycisk wejść stanie się aktywny, a użytkownik będzie mógł przesłać formularz na serwer, gdzie zostanie on przetworzony.

Autoryzacja użytkownika

Aby przypisać wartość działanie handicap autoryzacyjny ma określony plik autoryzacja.php, oznacza to, że formularz będzie przetwarzany w tym pliku.

I tak otwórz plik autoryzacja.php i napisz kod przetwarzający formularz autoryzacji. Pierwszą rzeczą, którą musisz zrobić, to rozpocząć sesję i podłączyć plik dbconnect.php aby połączyć się z bazą danych.

Po kliknięciu linku wyjściowego ze strony zostajemy przeniesieni do pliku wyloguj się.php, gdzie po prostu niszczymy komórki zawierające adres e-mail i hasło z sesji. Następnie zwracamy użytkownika z powrotem na stronę, na której kliknął link Wyjście.

Kod pliku wyloguj.php:

To wszystko. Teraz wiesz jak wdrożyć i przetwarzać formularze rejestracji i autoryzacji użytkowników na swojej stronie internetowej. Formularze te znajdują się niemal na każdej stronie internetowej, dlatego każdy programista powinien wiedzieć, jak je utworzyć.

Dowiedzieliśmy się także jak walidować dane wejściowe, zarówno po stronie klienta (w przeglądarce, przy użyciu JavaScript, jQuery), jak i po stronie serwera (przy użyciu PHP). Dowiedzieliśmy się także jak wdrożyć procedurę opuszczenia serwisu.

Wszystkie skrypty zostały przetestowane i działają. Możesz pobrać archiwum z plikami tej małej witryny pod tym linkiem.

W przyszłości napiszę artykuł, w którym opiszę. Planuję też napisać artykuł, w którym to wyjaśnię (bez przeładowywania strony). Aby więc być na bieżąco z publikacjami nowych artykułów, możesz zapisać się do mojej witryny.

Jeśli masz jakieś pytania, skontaktuj się ze mną, a jeśli zauważysz jakiś błąd w artykule, daj mi znać.

Scenariusz lekcji (część 5):

  • Stworzenie struktury HTML dla formularza autoryzacji
  • Przetwarzamy otrzymane dane
  • Powitanie użytkownika wyświetlamy w nagłówku witryny
  • Spodobał Ci się artykuł?

    Dowiemy się jak przeprowadzić prostą autoryzację użytkownika w serwisie. Serwis może posiadać strony tylko dla autoryzowanych użytkowników i będą one w pełni funkcjonować jeśli dodamy do nich naszą blokadę uwierzytelniającą. Do jego utworzenia potrzebna jest baza danych MySQL. Może mieć 5 kolumn (minimum) lub więcej, jeśli chcesz dodać informacje o użytkownikach. Nazwijmy bazę danych „Userauth”.

    Utwórzmy w nim następujące pola: ID do zliczania użytkowników, UID dla unikalnego numeru identyfikacyjnego użytkownika, Username dla nazwy użytkownika, Email dla jego adresu e-mail oraz Hasło dla hasła. Możesz wykorzystać istniejącą bazę danych do autoryzacji użytkownika, wystarczy, że tak jak w przypadku nowej bazy, utworzysz w niej poniższą tabelę.

    Kod MySQL'a

    UTWÓRZ TABELĘ `użytkownicy` (`ID` int (11) NIE NULL AUTO_INCREMENT, `UID` int (11) NIE NULL, `Nazwa użytkownika` tekst NIE NULL, `Email` tekst NIE NULL, `Hasło` tekst NIE NULL, KLUCZ PODSTAWOWY (`ID`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    Utwórzmy teraz plik „sql.php”. Odpowiada za połączenie z bazą danych. Kod ten po pierwsze tworzy zmienne dla serwera i użytkownika, gdy łączy się on z serwerem. Po drugie, wybierze bazę danych, w tym przypadku „USERAUTH”. Aby uzyskać dostęp do bazy danych, plik ten musi być zawarty w „log.php” i „reg.php”.

    Kod PHP

    Następna jest strona logowania, niech będzie się nazywać „login.php”. Najpierw sprawdza wprowadzone dane pod kątem błędów. Na stronie znajdują się pola na nazwę użytkownika, hasło, przycisk przesyłania i link rejestracyjny. Gdy użytkownik kliknie przycisk „Zaloguj się”, formularz zostanie przetworzony kodem z pliku „log.php” i następnie zalogowany.

    Kod PHP

    Forma loginu

    Nazwa użytkownika
    Hasło
    Rejestracja

    Następnie piszemy skrypt umożliwiający zalogowanie się do systemu. Nazwijmy to „log.php”. Posiada funkcję czyszczenia danych wejściowych z zastrzyków SQL, które mogą zniszczyć Twój skrypt. Po drugie, odbiera dane z formularza i sprawdza ich poprawność. Jeżeli wprowadzone dane są prawidłowe, skrypt odsyła użytkownika na stronę autoryzowanych użytkowników, jeżeli nie, ustawia błędy i odsyła użytkownika na stronę logowania.

    Kod PHP

    Stwórzmy stronę rejestracyjną, nazwijmy ją „register.php”. Jest ona podobna do strony logowania, z tą różnicą, że ma kilka dodatkowych pól i zamiast linku rejestracyjnego znajduje się link do login.php w przypadku, gdy użytkownik posiada już konto.

    Kod PHP

    Formularz rejestracyjny

    Nazwa użytkownika
    E-mail
    Hasło
    Powtórz hasło
    Mam konto

    Teraz utworzymy skrypt rejestracyjny w pliku „reg.php”. Będzie zawierać „sql.php”, aby połączyć się z bazą danych. Do czyszczenia pola wejściowego wykorzystywana jest ta sama funkcja co w skrypcie logowania. Zmienne są ustawione na możliwe błędy. Następna jest funkcja pozwalająca na utworzenie unikalnego identyfikatora, który nigdy wcześniej nie był podawany. Następnie pobierane i weryfikowane są dane z formularza rejestracyjnego. Następuje sprawdzenie, czy adres e-mail ma prawidłowy format i czy hasło zostało ponownie wprowadzone prawidłowo. Następnie skrypt sprawdza, czy w bazie danych znajduje się użytkownik o tej samej nazwie, i jeśli tak, zgłasza błąd. Na koniec kod dodaje użytkownika do bazy danych.

    Kod PHP

    Należy także utworzyć skrypt wylogowujący użytkownika z systemu. Kończy sesję użytkownika o podanym unikalnym identyfikatorze i nazwie, a następnie przekierowuje użytkownika na stronę logowania.

    Kod PHP

    Wreszcie, skrypt „auth.php” może zostać użyty do udostępnienia stron tylko autoryzowanym użytkownikom. Sprawdza dane do logowania i jeśli są prawidłowe, umożliwia przeglądanie stron, a jeśli nie, prosi o zalogowanie się. Ponadto, jeśli ktoś spróbuje włamać się na stronę, tworząc jedną z sesji, zostanie ona przerwana, jak w ogólnym przypadku.

    Kod PHP

    Jeden z warunków w powyższym kodzie jest tematem pytania w .

    Poniższy kod należy wstawić na stronę dla autoryzowanych użytkowników, nazywa się on na przykład „member.php”, ale Twój może nazywać się dowolnie.

    Kod PHP

    Masz uprawnienia dostępu do tej strony. Wychodzić ( )

    Uwierzytelnianie użytkownika jest gotowe!

    Ostatnia modyfikacja 5 kwietnia 2018 r. przez Vincy'ego.

    Podstawowym wymogiem dla każdej aplikacji CMS jest logowanie i rejestracja użytkownika. Jest to praca początkowa podczas rozpoczynania projektu. Aplikacja z uwierzytelnianiem logowania użytkownika zapewnia bezpieczeństwo uniemożliwiając anonimowy dostęp. Istnieją różne sposoby włączania uwierzytelniania w naszej aplikacji, na przykład poprzez włączenie logowania OAuth lub wdrożenie pojedynczego logowania (SSO) i podobnych innych sposobów. W poprzednim samouczku widzieliśmy, jak wdrożyć i o tym.

    Ten przykład obejmuje zarówno funkcje logowania, jak i rejestracji. Użyłem bazy danych MySQL do przechowywania zarejestrowanych członków. Rejestracja użytkownika będzie zawierać dane wejściowe umożliwiające uzyskanie szczegółowych informacji od użytkownika. Po przesłaniu tego formularza dane formularza są przesyłane do PHP i przechowywane w bazie danych. Hasło użytkownika zostanie zaszyfrowane przed zapisaniem w bazie danych. przed wysłaniem do kodu PHP. Gdy użytkownik jest zalogowany przy użyciu prawidłowych danych uwierzytelniających, użytkownik i on będą mogli kontynuować dalej.

    Formularz rejestracji użytkownika

    Ten kod ma pokazać użytkownikowi formularz rejestracji. Gdy użytkownik prześle formularz ze swoimi danymi, zostanie wywołana funkcja JavaScript w celu sprawdzenia wprowadzonych danych. Po pomyślnej weryfikacji kod PHP odczyta przesłane dane z formularza, aby wykonać wstawienie do bazy danych.