Dom Programy Tworzymy niezwykle prosty system rejestracji w PHP i MySQL. Tworzenie niesamowicie prostego systemu rejestracji w PHP i MySQL Ominięcie rejestracji członka php

Tworzymy niezwykle prosty system rejestracji w PHP i MySQL. Tworzenie niesamowicie prostego systemu rejestracji w PHP i MySQL Ominięcie rejestracji członka php

Utworzenie witryny opartej na członkostwie wydaje się początkowo trudnym zadaniem. Jeśli kiedykolwiek chciałeś zrobić to sam, ale poddałeś się, gdy zacząłeś myśleć, jak to połączyć, korzystając ze swoich umiejętności PHP, ten artykuł jest dla Ciebie. Przeprowadzimy Cię przez każdy aspekt tworzenia witryny opartej na członkostwie, z bezpieczną strefą członkowską chronioną hasłem.

Cały proces składa się z dwóch dużych części: rejestracji użytkownika i uwierzytelnienia użytkownika. W pierwszej części zajmiemy się tworzeniem formularza rejestracyjnego i przechowywaniem danych w bazie MySQL. W drugiej części utworzymy formularz logowania i za jego pomocą umożliwimy użytkownikom dostęp do bezpiecznego obszaru.

Pobierz kod

Cały kod źródłowy systemu rejestracji/logowania możesz pobrać pod linkiem poniżej:

Konfiguracja i przesyłanie
Plik ReadMe zawiera szczegółowe instrukcje.

Otworzyć źródło\include\membersite_config.php plik w edytorze tekstu i zaktualizuj konfigurację. (Login do bazy danych, nazwa Twojej witryny, adres e-mail itp.).

Prześlij całą zawartość katalogu. Przetestuj rejestr.php, przesyłając formularz.

Formularz rejestracyjny

Aby założyć konto użytkownika, musimy zebrać od użytkownika minimalną ilość informacji. Potrzebujemy jego imienia i nazwiska, adresu e-mail oraz żądanej nazwy użytkownika i hasła. Oczywiście w tym momencie możemy poprosić o więcej informacji, ale długi formularz zawsze zniechęca. Ograniczmy się więc tylko do tych dziedzin.

Oto formularz rejestracyjny:

Rejestr

Mamy więc pola tekstowe na imię i nazwisko, adres e-mail i hasło. Pamiętaj, że używamy dla lepszej użyteczności.

Walidacja formularza

W tym momencie warto umieścić jakiś kod weryfikacyjny formularza, dzięki czemu upewnimy się, że posiadamy wszystkie dane potrzebne do założenia konta użytkownika. Musimy sprawdzić, czy imię i nazwisko oraz adres e-mail i hasło zostały wpisane oraz czy wiadomość e-mail ma odpowiedni format.

Obsługa przesyłania formularza

Teraz musimy zająć się przesłanymi danymi formularza.

Oto sekwencja (zobacz plik fg_membersite.php w pobranym źródle):

funkcja RegisterUser() ( if(!isset($_POST["przesłany"])) (zwróć false; ) $formvars = array(); if(!$this->ValidateRegistrationSubmission()) (zwróć false; ) $this- >CollectRegistrationSubmission($formvars); if(!$this->SaveToDatabase($formvars)) (zwróć wartość false; ) if(!$this->SendUserConfirmationEmail($formvars)) (zwróć wartość false; ) $this->SendAdminIntimationEmail($ formvars); zwróć wartość true; )

Najpierw zatwierdzamy przesłanie formularza. Następnie zbieramy i „oczyszczamy” dane przesłane z formularza (zawsze rób to przed wysłaniem wiadomości e-mail, zapisaniem w bazie danych itp.). Przesłany formularz jest następnie zapisywany w tabeli bazy danych. Wysyłamy e-mail do użytkownika z prośbą o potwierdzenie. Następnie informujemy administratora, że ​​użytkownik się zarejestrował.

Zapisywanie danych w bazie danych

Teraz, gdy zebraliśmy już wszystkie dane, musimy zapisać je w bazie danych.
Oto jak zapisujemy przesłane formularze do bazy danych.

funkcja SaveToDatabase(&$formvars) ( if(!$this->DBLogin()) ( $this->HandleError("Logowanie do bazy danych nie powiodło się!"); return false; ) if(!$this->Ensuretable()) ( return false; ) if(!$this->IsFieldUnique($formvars,"email")) ( $this->HandleError("Ten e-mail jest już zarejestrowany"); return false; ) if(!$this->IsFieldUnique( $formvars,"username")) ( $this->HandleError("Ta nazwa użytkownika jest już używana. Spróbuj użyć innej nazwy użytkownika"); return false; ) if(!$this->InsertIntoDB($formvars)) ( $this- >HandleError("Wstawianie do bazy danych nie powiodło się!"); return false; ) return true; )

Pamiętaj, że dane logowania do bazy danych zostały skonfigurowane w pliku membersite_config.php. W większości przypadków można użyć „localhost” jako hosta bazy danych.
Po zalogowaniu sprawdzamy, czy tabela istnieje. (Jeśli nie, skrypt utworzy wymaganą tabelę).
Następnie upewniamy się, że nazwa użytkownika i adres e-mail są unikalne. Jeśli nie jest unikalny, zwracamy błąd użytkownikowi.

Struktura tabeli bazy danych

Taka jest struktura tabeli. Funkcja CreateTable() w pliku fg_membersite.php tworzy tabelę. Oto kod:

funkcja CreateTable() ( $qry = "Utwórz tabelę $this->nazwa tabeli (". "id_user INT NOT NULL AUTO_INCREMENT", "nazwa VARCHAR(128) NOT NULL", "e-mail VARCHAR(64) NOT NULL", " "numer_telefonu VARCHAR(16) NOT NULL ”, „nazwa użytkownika VARCHAR(16) NOT NULL”, „hasło VARCHAR(32) NOT NULL”, „kod potwierdzenia VARCHAR(32)”, „KLUCZ PODSTAWOWY (id_użytkownika).” „)”; if( !mysql_query($qry,$this->connection)) ( $this->HandleDBError("Błąd podczas tworzenia tabeli \nzapytania był\n $qry"); return false; ) return true; )

Pole id_user będzie zawierać unikalny identyfikator użytkownika i jest jednocześnie kluczem podstawowym tabeli. Zwróć uwagę, że w polu hasła dopuszczamy 32 znaki. Robimy to, ponieważ jako dodatkowy środek bezpieczeństwa będziemy przechowywać hasło w bazie danych zaszyfrowane przy użyciu MD5. Należy pamiętać, że ponieważ MD5 jest metodą szyfrowania jednokierunkowego, nie będziemy w stanie odzyskać hasła, jeśli użytkownik je zapomni.

Wstawienie rejestracji do tabeli

Oto kod, którego używamy do wstawiania danych do bazy danych. Wszystkie nasze dane będą dostępne w tablicy $formvars.

funkcja InsertIntoDB(&$formvars) ( $confirmcode = $this->MakeConfirmationMd5($formvars["email"]); $insert_query = "wstaw do ".$this->nazwa tabeli."(nazwa, adres e-mail, nazwa użytkownika, hasło, kod potwierdzenia) wartości („” . $this->SanitizeForSQL($formvars["nazwa"]) . "", "" . $this->SanitizeForSQL($formvars["email"]) . "", "" .$ this->SanitizeForSQL($formvars["nazwa użytkownika"]) . "", "" .md5($formvars["hasło"]) . "", "" . $confirmcode . """; if(! mysql_query( $insert_query ,$this->połączenie)) ( $this->HandleDBError("Błąd podczas wstawiania danych do tabeli\nquery:$insert_query"); return false; ) return true; )

Zauważ, że używamy funkcji PHP md5() do szyfrowania hasła przed wstawieniem go do bazy danych.
Tworzymy również unikalny kod potwierdzający z adresu e-mail użytkownika.

Wysyłać maile

Teraz, gdy mamy rejestrację w naszej bazie danych, wyślemy użytkownikowi wiadomość e-mail z potwierdzeniem. Aby zakończyć proces rejestracji, użytkownik musi kliknąć łącze w wiadomości e-mail z potwierdzeniem.

funkcja SendUserConfirmationEmail(&$formvars) ( $mailer = new PHPMailer(); $mailer->CharSet = "utf-8"; $mailer->AddAddress($formvars["email"],$formvars["nazwa"]) ; $mailer->Subject = "Twoja rejestracja w ".$this->sitename; $mailer->From = $this->GetFromAddress(); $confirmcode = urlencode($this->MakeConfirmationMd5($formvars["email" ])); $confirm_url = $this->GetAbsoluteURLFolder()."/confirmreg.php?code=".$confirmcode; $mailer->Body ="Witajcie ".$formvars["name"]."\r\ n\r\n". "Dziękujemy za rejestrację w ".$this->sitename."\r\n". "Kliknij poniższy link, aby potwierdzić rejestrację.\r\n." "$confirm_url\r \n". "\r\n". "Pozdrowienia,\r\n". "Webmaster\r\n". $this->sitename; if(!$mailer->Send()) ( $this-> HandleError("Nie udało się wysłać e-maila z potwierdzeniem rejestracji."); return false; ) return true; )

Aktualizacje

9 stycznia 2012 r
Dodano funkcje Resetuj hasło/Zmień hasło
Kod jest teraz udostępniany w GitHubie.

Witamy spowrotemPełna nazwa użytkownika(); ?>!

Licencja


Kod udostępniany jest na licencji LGPL. Można go swobodnie używać na komercyjnych i niekomercyjnych stronach internetowych.

Brak pokrewnych postów.

Komentarze do tego wpisu są zamknięte.

W ciągu ostatnich kilku lat hosting przeszedł radykalną zmianę. Usługi hostingowe zmieniły sposób działania witryn internetowych. Istnieje kilka rodzajów usług, ale dzisiaj porozmawiamy o opcjach dostępnych dla dostawców usług hostingowych dla sprzedawców. Są to Hosting dla sprzedawców systemu Linux i Hosting dla sprzedawców systemu Windows. Zanim zrozumiemy podstawowe różnice między nimi, dowiedzmy się, czym jest hosting dla sprzedawców.

Hosting dla sprzedawców

Mówiąc najprościej, hosting dla resellerów to forma hostingu internetowego, w ramach której właściciel konta może wykorzystywać swoje dedykowane miejsce na dysku twardym i przydzieloną przepustowość w celu odsprzedaży na stronach internetowych osób trzecich. Czasami sprzedawca może wypożyczyć serwer dedykowany od firmy hostingowej (Linux lub Windows) i następnie udostępnić go osobom trzecim.

Większość użytkowników stron internetowych korzysta z systemu Linux lub Windows. Ma to związek z czasem pracy. Obie platformy zapewniają, że Twoja witryna będzie wyświetlana przez 99% czasu.

1. Personalizacja

Jedna z głównych różnic pomiędzy planem hostingowym dla sprzedawców systemu Linux a planem udostępnianym przez system Windows polega na dostosowaniu. Chociaż możesz eksperymentować z obydwoma odtwarzaczami na kilka sposobów, Linux jest znacznie bardziej konfigurowalny niż Windows. Ten ostatni ma więcej funkcji niż jego odpowiednik i dlatego wielu programistów i administratorów uważa Linuksa za bardzo przyjazny dla klienta.

2. Aplikacje

Różne usługi hostingowe dla sprzedawców mają różne zastosowania. Zarówno Linux, jak i Windows mają własną gamę aplikacji, ale ten drugi ma przewagę, jeśli chodzi o liczbę i wszechstronność. Ma to związek z otwartą naturą Linuksa. Każdy programista może przesłać swoją aplikację na platformę Linux, co czyni ją atrakcyjnym dostawcą hostingu dla milionów właścicieli witryn.

Należy jednak pamiętać, że jeśli używasz Linuksa do hostingu stron internetowych, ale jednocześnie używasz systemu operacyjnego Windows, niektóre aplikacje mogą po prostu nie działać.

3.Stabilność

Chociaż obie platformy są stabilne, Linux Reseller Hosting jest z nich bardziej stabilny. Będąc platformą typu open source, może pracować w kilku środowiskach. Platforma ta może być co jakiś czas modyfikowana i rozwijana.

4. Kompatybilność z .NET

Nie chodzi o to, że Linux jest lepszy od Windowsa pod każdym możliwym względem. Jeśli chodzi o kompatybilność z .NET, Windows skupia uwagę. Aplikacje internetowe można łatwo tworzyć na platformie hostingowej Windows.

5. Korzyści kosztowe

Obie platformy hostingowe są niedrogie. Jeśli jednak odczuwasz brak gotówki, powinieneś wybrać Linuksa. Jest darmowy i dlatego wybiera go tak wielu programistów i administratorów systemów na całym świecie.

6. Łatwość konfiguracji

Windows jest łatwiejszy w konfiguracji niż jego odpowiednik. Mimo wszystko, co zostało powiedziane i zrobione, system Windows nadal pozostaje przyjazny dla użytkownika przez te wszystkie lata.

7. Bezpieczeństwo

Wybierz hosting dla sprzedawców systemu Linux, ponieważ jest on bezpieczniejszy niż system Windows. Dotyczy to zwłaszcza osób prowadzących działalność w branży e-commerce.

Wniosek

Wybór pomiędzy jednym i drugimbędzie zależeć od wymagań i elastyczności kosztów. Obie usługi hostingowe mają unikalne zalety. Chociaż system Windows jest łatwy w konfiguracji, Linux jest ekonomiczny, bezpieczny i bardziej wszechstronny.



W marcu tego roku miałem bardzo złe doświadczenia z firmą medialną, która odmówiła mi płacenia i odpowiadania na moje e-maile. Nadal są mi winni tysiące dolarów, a uczucie wściekłości przenika mnie każdego dnia. Okazuje się jednak, że nie jestem sam i setki innych właścicieli witryn internetowych jadą na tej samej łodzi. To coś w rodzaju kursu z reklamą cyfrową.

Szczerze mówiąc, prowadzę tego bloga od dłuższego czasu i w przeszłości przeglądałem różne sieci reklamowe. Po usunięciu jednostek reklamowych firmy, która mnie oszukała, wróciłem do punktu wyjścia. Powinienem też zauważyć, że Nigdy nie lubiłem produktu Google AdSense tylko dlatego, że wydaje mi się, że jest to „dno beczki” reklam displayowych. Nie z punktu widzenia jakości, ale przychodów.

Z tego, co rozumiem, chcesz, aby w Twojej witrynie były reklamy Google, ale chcesz, żeby robiły to także inne duże firmy i agencje. W ten sposób maksymalizujesz popyt i przychody.

Po moich negatywnych doświadczeniach mogę polecić firmę Newor Media. I jeśli mam być szczery, na początku nie zostałem sprzedany głównie dlatego, że nie mogłem znaleźć zbyt wielu informacji na ich temat. Znalazłem kilka przyzwoitych recenzji na innych stronach i po rozmowie z kimś tam zdecydowałem się spróbować Powiem, że są SUPER pomocni. Każda sieć, z którą kiedykolwiek współpracowałem, udzieliła mi dość krótkich odpowiedzi, jeśli chodzi o odpowiedzi i rozpoczęcie pracy. Odpowiedzieli na każde pytanie i był to naprawdę zachęcający proces.

Wyświetlam reklamy od kilku miesięcy i zarobki są mniej więcej porównywalne z tym, co zarabiałem w innej firmie. Nie mogę więc powiedzieć, czy są dużo lepsze od innych, ale w czym się wyróżniają? to kwestia, którą naprawdę chcę poruszyć. Komunikacja z nimi nie przypomina żadnej innej sieci, w której kiedykolwiek pracowałem. Oto przypadek, w którym naprawdę się różnią:

Przesłali mi pierwszą płatność na czas za pomocą Paypal. Ponieważ jednak nie jestem w USA (a myślę, że zdarza się to każdemu), pobrano mi opłatę z PayPal. Wysłałem w tej sprawie e-mail do mojego przedstawiciela z pytaniem, czy istnieje sposób na uniknięcie tego w przyszłości.

Mówili, że nie mogą uniknąć opłaty, ale żeby ZWRÓCILI WSZYSTKIE OPŁATY.... W TYM OSTATNIE PŁATNOŚCI! Mało tego, zwrot kosztów otrzymano w ciągu 10 MINUT! Czy kiedykolwiek mogłeś złożyć taką prośbę bez konieczności przekazywania jej do „działu finansów”, gdzie nigdy nie otrzymałeś odpowiedzi.

Najważniejsze jest to, że kocham tę firmę. Być może byłbym w stanie zarobić więcej gdzie indziej, nie jestem do końca pewien, ale mają ze mną wydawcę na całe życie. Nie jestem dużą witryną i nie generuję ogromnych dochodów, ale czuję się jak bardzo ważny klient, kiedy z nimi rozmawiam. To naprawdę powiew świeżego powietrza w branży pełnej oszustw i braku reakcji.

Mikrokomputery stworzone przez Fundację Raspberry Pi w 2012 roku odniosły ogromny sukces w pobudzaniu kreatywności u małych dzieci, a ta brytyjska firma zaczęła oferować programy startowe do nauki kodowania, takie jak pi-top i Kano. Obecnie istnieje nowy startup, który wykorzystuje elektronikę Pi, a urządzenie jest znane jako Pip i jest to przenośna konsola oferująca ekran dotykowy, wiele portów, przyciski sterujące i głośniki. Ideą tego urządzenia jest zaangażowanie młodszych osób w urządzenie do gier, które jest w stylu retro, ale oferuje również możliwość nauki kodu za pośrednictwem platformy internetowej.

Niesamowita platforma programowa oferowana z Pipem umożliwi rozpoczęcie kodowania w Pythonie, HTML/CSS, JavaScript, Lua i PHP. Urządzenie oferuje szczegółowe samouczki ułatwiające dzieciom rozpoczęcie kodowania, a nawet umożliwia im miganie diod LED. Chociaż Pip jest wciąż prototypem, z pewnością odniesie ogromny sukces w branży i zaangażuje dzieci zainteresowane kodowaniem oraz zapewni im edukację i zasoby potrzebne do rozpoczęcia kodowania w młodym wieku.

Przyszłość kodowania

Kodowanie ma przed sobą wspaniałą przyszłość i nawet jeśli dzieci nie będą zawodowo zajmować się programowaniem, mogą skorzystać na nauce kodowania za pomocą tego nowego urządzenia, dzięki któremu jest to łatwiejsze niż kiedykolwiek. Dzięki Pipowi nawet najmłodsi entuzjaści kodowania nauczą się różnych języków i będą na dobrej drodze do tworzenia własnych kodów, własnych gier, własnych aplikacji i nie tylko. To przyszłość ery elektronicznej, a Pip umożliwia opanowanie podstawowych elementów kodowania.
Informatyka stała się ważną częścią edukacji, a dzięki urządzeniom takim jak nowy Pip dzieci mogą zacząć wzbogacać swoją edukację w domu, bawiąc się. Kodowanie wykracza daleko poza proste tworzenie stron internetowych lub oprogramowania. Można go wykorzystać do zwiększenia bezpieczeństwa w mieście, pomocy w badaniach w dziedzinie medycyny i nie tylko. Ponieważ żyjemy obecnie w świecie zdominowanym przez oprogramowanie, kodowanie jest przyszłością i ważne jest, aby wszystkie dzieci przynajmniej w podstawowym stopniu rozumiały, jak to działa, nawet jeśli nigdy nie wykorzystają tych umiejętności w karierze zawodowej. W przyszłości kodowanie będzie kluczowym elementem codziennego życia. Będzie to język świata, a nieznajomość komputerów i ich działania może stanowić wyzwanie równie trudne do pokonania jak analfabetyzm.
Kodowanie zapewni także poważne zmiany w świecie gier, zwłaszcza jeśli chodzi o gry online, w tym dostęp do kasyn online. Aby zobaczyć, jak kodowanie usprawniło już świat gier, przejrzyj kilka najwyżej ocenianych witryn kasyn, które opierają się na kodowaniu. Rzuć okiem, aby to sprawdzić i zobaczyć, jak kodowanie może przedstawiać realistyczne środowiska online.

Jak Pip angażuje dzieci

Jeśli chodzi o możliwość nauki kodowania, dzieci mają wiele możliwości. Istnieje wiele urządzeń i gadżetów sprzętowych, które można kupić, ale Pip ma inne podejście do swojego urządzenia. Przenośność urządzenia i ekranu dotykowego stanowią przewagę nad innymi urządzeniami kodującymi dostępnymi na rynku. Pip będzie w pełni kompatybilny z komponentami elektronicznymi oprócz systemu Raspberry Pi HAT. Urządzenie wykorzystuje standardowe języki oraz posiada podstawowe narzędzia i jest idealnym urządzeniem dla każdego początkującego kodera. Celem jest usunięcie wszelkich barier pomiędzy pomysłem a dziełem i udostępnienie narzędzi do natychmiastowego użycia. Jedną z innych wielkich zalet Pipa jest to, że wykorzystuje kartę SD, dzięki czemu może być używany również jako komputer stacjonarny, gdy jest podłączony do monitora i myszy.
Urządzenie Pip pomogłoby dzieciom i początkującym programistom z entuzjazmem w nauce i ćwiczeniu kodowania. Oferując połączenie realizacji zadań i majsterkowania przy rozwiązywaniu problemów, urządzenie z pewnością zaangażuje młodsze pokolenie. Urządzenie umożliwia następnie młodym programistom przejście na bardziej zaawansowane poziomy kodowania w różnych językach, takich jak JavaScript i HTML/CSS. Ponieważ urządzenie jest repliką konsoli do gier, natychmiast przyciągnie uwagę dzieci i zaangażuje je do nauki kodowania już od najmłodszych lat. Zawiera także kilka fabrycznie załadowanych gier, takich jak Pac-Man i Minecraft, które przyciągną uwagę.

Nadchodzące innowacje

Przyszłe innowacje w dużej mierze zależą od obecnych umiejętności dziecka w zakresie kodowania i jego ogólnego zrozumienia procesu. Dzięki temu, że dzieci od najmłodszych lat nauczą się kodować, korzystając z takich urządzeń jak nowy Pip, zdobędą umiejętności i wiedzę, dzięki którym w przyszłości będą mogły tworzyć niesamowite rzeczy. Może to oznaczać wprowadzenie nowych gier lub aplikacji, a nawet pomysłów, które mogą wcielić w życie i pomóc w badaniach medycznych i leczeniu. Istnieją nieograniczone możliwości. Ponieważ naszą przyszłość będzie kontrolować oprogramowanie i komputery, najlepszym sposobem jest rozpoczęcie w młodym wieku, dlatego nowy Pip jest nastawiony na młodych ludzi. Oferując konsolę, na której można grać w gry, jednocześnie ucząc umiejętności kodowania, młodzi członkowie społeczeństwa są na dobrej drodze do zostania w przyszłości twórcami oprogramowania, które zmieni całe nasze życie. To dopiero początek, ale miliony dzieci na całym świecie zaczynają się tego uczyć i doskonalić. Dzięki urządzeniom takim jak Pip omówione zostaną podstawy kodowania, a dzieci szybko nauczą się różnych języków kodowania, co może prowadzić ich na niesamowite ścieżki wkraczania w dorosłość.

Tutorial dla bardzo początkujących! Nieważne, gdzie się udasz w Internecie, prawie wszędzie znajdziesz podstawowy element – ​​rejestrację użytkownika. Niezależnie od tego, czy potrzebujesz, aby Twoi użytkownicy rejestrowali się ze względów bezpieczeństwa, czy tylko w celu uzyskania dodatkowej funkcji, nie ma powodu, aby nie zrobić tego, korzystając z tego prostego samouczka W tym samouczku omówimy podstawy zarządzania użytkownikami, kończąc na prostym obszarze członkowskim, który możesz zaimplementować na własnej stronie internetowej.

Jeśli potrzebujesz dodatkowej pomocy lub szukasz skrótu, sprawdź ofertę dostawców usług PHP w Envato Studio. Ci doświadczeni programiści mogą pomóc Ci we wszystkim, od szybkiego naprawienia błędu po stworzenie całej aplikacji od zera. Po prostu przejrzyj dostawców, przeczytaj recenzje i oceny i wybierz odpowiedniego dla siebie.

Wstęp

W tym samouczku omówimy każdy etap tworzenia systemu zarządzania użytkownikami wraz z systemem prywatnych wiadomości między użytkownikami. Zrobimy to za pomocą PHP, z bazą danych MySQL do przechowywania wszystkich informacji o użytkowniku. Ten samouczek jest przeznaczony dla absolutnie początkujących w PHP, więc nie jest wymagana żadna wcześniejsza wiedza - w rzeczywistości możesz się trochę znudzić, jeśli jesteś doświadczonym użytkownikiem PHP!

Ten samouczek ma stanowić podstawowe wprowadzenie do sesji i korzystania z baz danych w PHP. Chociaż efekt końcowy tego samouczka może nie wydawać ci się od razu przydatny, umiejętności, które zdobędziesz w tym samouczku, pozwolą ci na dalsze tworzenie własnego systemu członkostwa; do własnych potrzeb.

Zanim rozpoczniesz ten samouczek, upewnij się, że masz pod ręką następujące informacje:

  • Nazwa hosta bazy danych- jest to serwer, na którym znajduje się Twoja baza danych. W większości sytuacji będzie to po prostu „localhost”.
  • Nazwa bazy danych, nazwa użytkownika bazy danych, hasło bazy danych- przed rozpoczęciem tego samouczka powinieneś utworzyć bazę danych MySQL, jeśli masz taką możliwość lub masz pod ręką informacje umożliwiające połączenie się z istniejącą bazą danych. Informacje te są potrzebne w całym samouczku.

Jeśli nie masz tych informacji, Twój dostawca usług hostingowych powinien być w stanie Ci je dostarczyć.

Skoro mamy już za sobą formalności, przejdźmy do samouczka!

Krok 1 – Konfiguracja wstępna

Konfiguracja bazy danych

Jak stwierdzono we wstępie, do kontynuowania pracy poza tym punktem samouczka potrzebna jest baza danych. Na początek utworzymy w tej bazie danych tabelę do przechowywania informacji o użytkowniku.

Tabela, której potrzebujemy, będzie przechowywać informacje o naszym użytkowniku; do naszych celów użyjemy prostej tabeli, ale jeśli zajdzie taka potrzeba, łatwo będzie przechowywać więcej informacji w dodatkowych kolumnach. W naszym systemie potrzebujemy następujących czterech kolumn:

  • Identyfikator użytkownika (Główny klucz)
  • Nazwa użytkownika
  • Hasło
  • Adres e-mail

W kategoriach baz danych, a Główny klucz jest polem, które jednoznacznie identyfikuje wiersz. W tym przypadku UserID będzie naszym kluczem podstawowym. Ponieważ chcemy, aby wartość ta zwiększała się za każdym razem, gdy użytkownik się zarejestruje, użyjemy specjalnej opcji MySQL - auto_inkrementacja.

Zapytanie SQL służące do utworzenia naszej tabeli znajduje się poniżej i zwykle będzie uruchamiane w zakładce „SQL” w phpMyAdmin.

UTWÓRZ TABELĘ `użytkownicy` („IDUżytkownika” INT(25) NIE NULL KLUCZ PODSTAWOWY AUTO_INCREMENT , `Nazwa użytkownika` VARCHAR(65) NIE NULL , `Hasło` VARCHAR(32) NIE NULL , `Adres e-mail` VARCHAR(255) NIE NULL );

Tworzenie pliku podstawowego

Aby uprościć tworzenie naszego projektu, stworzymy plik bazowy, który będziemy mogli dołączyć do każdego z tworzonych przez nas plików. Plik ten będzie zawierał informacje o połączeniu z bazą danych wraz z pewnymi zmiennymi konfiguracyjnymi, które pomogą nam w tym procesie.

Zacznij od utworzenia nowego pliku: base.php i wpisz w nim następujący kod:

Przyjrzyjmy się kilku z tych linii, dobrze? Jest tu kilka funkcji, których użyliśmy, a które jeszcze nie zostały wyjaśnione, więc przejrzyjmy je szybko i znajdźmy dla nich sens – jeśli rozumiesz już podstawy PHP, możesz pominąć to wyjaśnienie.

Początek_sesji();

Ta funkcja rozpoczyna sesję dla nowego użytkownika, a w dalszej części tego samouczka będziemy przechowywać informacje w tej sesji, aby umożliwić nam rozpoznanie użytkowników, którzy już się zalogowali. Jeśli sesja została już utworzona, ta funkcja rozpozna to i przeniesie tę sesję na następną stronę.

Mysql_connect($dbhost, $dbuser, $dbpass) or die("Błąd MySQL: " .mysql_error()); mysql_select_db($nazwa bazy danych) or die("Błąd MySQL: " . mysql_error());

Każda z tych funkcji wykonuje oddzielne, ale powiązane zadanie. Funkcja mysql_connect łączy nasz skrypt z serwerem bazy danych, korzystając z informacji, które podaliśmy powyżej, a funkcja mysql_select_db wybiera następnie bazę danych, której ma używać skrypt. Jeśli którakolwiek z funkcji nie zostanie ukończona, funkcja matrycy automatycznie wkroczy i zatrzyma przetwarzanie skryptu, pozostawiając wszystkich użytkowników z komunikatem, że wystąpił błąd MySQL.

Krok 2 – Powrót do frontendu

Co musimy zrobić najpierw?

Najważniejszym elementem na naszej stronie jest pierwsza linia PHP; ta linia będzie zawierać plik, który utworzyliśmy powyżej (base.php) i zasadniczo umożliwi nam dostęp do czegokolwiek z tego pliku w naszym bieżącym pliku. Zrobimy to za pomocą następującej linii kodu PHP. Utwórz plik o nazwie indeks.php i umieść ten kod na górze.

Rozpocznij stronę HTML

Pierwszą rzeczą, którą zrobimy dla naszego frontendu, będzie utworzenie strony, na której użytkownicy będą mogli wprowadzić swoje dane, aby się zalogować, lub jeśli są już zalogowani, stronę, na której będą mogli wybrać, co chcą dalej robić. W tym samouczku zakładam, że użytkownicy mają podstawową wiedzę na temat działania HTML/CSS i dlatego nie będę szczegółowo wyjaśniał tego kodu; w tej chwili te elementy nie będą stylizowane, ale będziemy mogli to zmienić później, tworząc nasz arkusz stylów CSS.

Korzystając z pliku, który właśnie utworzyliśmy (index.php), wprowadź następujący kod HTML poniżej linii PHP, którą już utworzyliśmy.

Co im pokażemy?

Zanim wyświetlimy resztę strony, zadajmy sobie kilka pytań:

  1. Czy użytkownik jest już zalogowany?
  • Tak- musimy pokazać im stronę z opcjami do wyboru.
  • NIE
  • Czy użytkownik podał już swoje dane do logowania?
    • Tak- musimy sprawdzić ich dane i jeśli są prawidłowe, zalogujemy je do serwisu.
    • NIE- przechodzimy do następnego pytania.
  • Jeśli odpowiedziano na oba powyższe NIE, możemy teraz założyć, że musimy wyświetlić użytkownikowi formularz logowania.
  • Te pytania są w rzeczywistości tymi samymi pytaniami, które zamierzamy zaimplementować w naszym kodzie PHP. Zrobimy to w formie instrukcji if. Nie wprowadzając niczego do żadnego z nowych plików, przyjrzyjmy się logice, której użyjemy w pierwszej kolejności.

    Wygląda na zagmatwane, prawda? Podzielmy to na mniejsze sekcje i omówmy je pojedynczo.

    If(!empty($_SESSION["LoggedIn"]) && !empty($_SESSION["Nazwa użytkownika"])) ( // Pozwól użytkownikowi uzyskać dostęp do strony głównej )

    Kiedy użytkownik loguje się do naszej witryny, będziemy przechowywać jego informacje w sesji - w dowolnym momencie możemy uzyskać dostęp do tych informacji w specjalnej globalnej tablicy PHP - $_SESSION. Używamy funkcji pustych do sprawdzenia, czy zmienna jest pusta, za pomocą operatora ! Przed tym. Dlatego mówimy:

    Jeśli zmienna $_SESSION["LoggedIn"] nie jest pusta i $_SESSION["Nazwa użytkownika"] nie jest pusta, wykonaj ten fragment kodu.

    Następny wiersz działa w ten sam sposób, tyle że tym razem przy użyciu tablicy globalnej $_POST. Ta tablica zawiera wszelkie dane przesłane z formularza logowania, który utworzymy w dalszej części tego samouczka. Ostatnia linia zostanie wykonana tylko wtedy, gdy nie zostanie spełniona żadna z poprzednich instrukcji; w takim przypadku wyświetlimy użytkownikowi formularz logowania.

    Skoro już rozumiemy logikę, umieśćmy trochę treści pomiędzy tymi sekcjami. W pliku Index.php wpisz poniżej to, co już masz.

    Strefa użytkownika

    a twój adres e-mail to .

    Powodzenie"; Echo "

    Przekierowujemy Cię teraz do strefy członkowskiej.

    "; Echo " "; ) jeszcze (echo "

    Błąd

    "; Echo "

    Przepraszamy, nie udało się znaleźć Twojego konta. Proszę Kliknij tutaj, aby spróbować ponownie.

    "; ) ) jeszcze (?>

    Login członka

    Dzięki za odwiedziny! Zaloguj się poniżej lub kliknij tutaj, aby się zarejestrować.



    Mamy nadzieję, że pierwszy i ostatni blok kodu nie wprowadzą Was zbytnio w zamieszanie. To, czym naprawdę musimy się teraz zająć, to to, po co wszyscy przyszliście do tego samouczka – kod PHP. Przejdziemy teraz przez drugą sekcję, wiersz po wierszu, i wyjaśnię, do czego przeznaczony jest każdy fragment kodu.

    $nazwa użytkownika = mysql_real_escape_string($_POST["nazwa użytkownika"]); $hasło = md5(mysql_real_escape_string($_POST["hasło"]));

    Istnieją dwie funkcje, które wymagają wyjaśnienia. Po pierwsze mysql_real_escape_string - bardzo przydatna funkcja do czyszczenia danych wejściowych z bazy danych. Nie jest to środek niezawodny, ale zapobiegnie większości złośliwych hakerów, usuwając niechciane części tego, co zostało umieszczone w naszym formularzu logowania. Po drugie, md5. Nie można tu wchodzić w szczegóły, ale funkcja ta po prostu szyfruje wszystko, co jest do niej przekazywane – w tym przypadku hasło użytkownika – aby zapobiec odczytaniu tego przez wścibskie oczy.

    $checklogin = mysql_query("WYBIERZ * OD użytkowników GDZIE Nazwa użytkownika = ".$nazwa użytkownika."" AND Hasło = ".$hasło."""); if(mysql_num_rows($checklogin) == 1) ( $row = mysql_fetch_array($checklogin); $email = $row["EmailAddress"]; $_SESSION["Nazwa użytkownika"] = $nazwa użytkownika; $_SESSION["Adres e-mail"] = $e-mail;$_SESSION["Zalogowany"] = 1;

    Tutaj mamy rdzeń naszego kodu logowania; po pierwsze, uruchamiamy zapytanie w naszej bazie danych. W tym zapytaniu szukamy wszystkiego, co dotyczy członka, którego nazwa użytkownika i hasło odpowiadają wartościom naszej nazwy użytkownika i hasła $podanym przez użytkownika. W kolejnej linii mamy instrukcję if, w której sprawdzamy, ile otrzymaliśmy wyników - jeśli nie będzie żadnych wyników, ta sekcja nie zostanie przetworzona. Ale jeśli jest jakiś rezultat, wiemy, że użytkownik istnieje, więc będziemy go logować.

    Kolejne dwie linijki służą do uzyskania adresu e-mail użytkownika. Mamy już tę informację z zapytania, które już wykonaliśmy, więc możemy łatwo uzyskać do niej dostęp. W pierwszej kolejności otrzymujemy tablicę danych, które zostały pobrane z bazy danych - w tym przypadku używamy funkcji PHP mysql_fetch_array. Następnie przypisałem wartość pola EmailAddress do zmiennej, którą możemy wykorzystać później.

    Teraz ustalamy sesję. Przechowujemy nazwę użytkownika i adres e-mail użytkownika w sesji, wraz ze specjalną wartością, abyśmy wiedzieli, że został on zalogowany przy użyciu tego formularza. Po tym wszystkim, zostanie on przekierowany do Strefy członkowskiej za pomocą META REFRESH w kodzie.

    Jak więc obecnie wygląda nasz projekt z perspektywy użytkownika?

    Świetnie! Nadszedł czas, aby przejść dalej i upewnić się, że ludzie rzeczywiście mogą dostać się do Twojej witryny.

    Pozwól ludziom się zarejestrować

    Dobrze jest mieć formularz logowania na swojej stronie, ale teraz musimy pozwolić użytkownikowi na korzystanie z niego - musimy utworzyć formularz logowania. Utwórz plik o nazwie Register.php i umieść w nim następujący kod.

    System zarządzania użytkownikami (Tom Cameron dla NetTuts)

    Błąd"; Echo "

    Przepraszam ta nazwa użytkownika jest zajęta. Wróć i spróbuj ponownie.

    "; ) else ( $registerquery = mysql_query("WSTAW DO użytkowników (nazwa użytkownika, hasło, adres e-mail) WARTOŚCI("".$nazwa użytkownika."", ".$hasło.", ".$email."") " ); if($registerquery) ( echo "

    Powodzenie

    "; Echo "

    Twoje konto zostało pomyślnie utworzone. Proszę Kliknij tutaj aby się zalogować.

    "; ) jeszcze (echo "

    Błąd

    "; Echo "

    Przepraszamy, rejestracja nie powiodła się. Wróć i spróbuj ponownie.

    "; ) ) ) jeszcze (?>

    Rejestr

    Aby się zarejestrować, wpisz poniżej swoje dane.




    Zatem nie ma zbyt wiele nowego PHP, którego jeszcze nie nauczyliśmy się w tej sekcji. Rzućmy jednak okiem na to zapytanie SQL i zobaczmy, czy uda nam się ustalić, co robi.

    $registerquery = mysql_query("WSTAW DO użytkowników (nazwa użytkownika, hasło, adres e-mail) WARTOŚCI("".$nazwa użytkownika.", ".$hasło.", ".$email."")");

    Zatem tutaj dodajemy użytkownika do naszej bazy danych. Tym razem zamiast pobierać dane, wstawiamy je ponownie, więc najpierw określamy, w jakich kolumnach wprowadzamy dane (nie zapomnij, nasz UserID podniesie się automatycznie). W obszarze VALUES() ponownie mówienie mu, co umieścić w każdej kolumnie; w tym przypadku nasze zmienne, które pochodzą z danych wprowadzonych przez użytkownika. Spróbujmy więc; po utworzeniu konta w nowym formularzu rejestracyjnym, oto co zobaczysz w Strefie Członkowskiej.

    Upewnij się, że mogą się wylogować

    Jesteśmy prawie na końcu tej sekcji, ale zanim skończymy, potrzebujemy jeszcze jednej rzeczy — sposobu, w jaki użytkownicy mogą wylogować się ze swoich kont. Jest to bardzo łatwe (na szczęście dla nas); utwórz nowy plik o nazwie logout.php i wprowadź w nim następujące dane.

    W tym przypadku najpierw resetujemy naszą globalną tablicę $_SESSION, a następnie całkowicie niszczymy sesję.

    I to już koniec tej sekcji i koniec kodu PHP. Przejdźmy teraz do ostatniej sekcji.

    Krok 3 – Stylizuj

    Nie będę zbyt wiele wyjaśniał w tej sekcji - jeśli nie rozumiesz HTML/CSS, gorąco polecam jeden z wielu doskonałych samouczków na tej stronie, na początek. Utwórz nowy plik o nazwie style.css i wprowadź w nim następujące informacje; spowoduje to stylizację wszystkich stron, które do tej pory stworzyliśmy.

    * ( margines: 0; dopełnienie: 0; ) body ( rodzina czcionek: Trebuchet MS; ) a ( color: #000; ) a:hover, a:active, a:visited ( dekoracja tekstu: brak; ) #main ( szerokość: 780px; margines: 0 auto; górny margines: 50px; dopełnienie: 10px; obramowanie: 1px pełne #CCC; kolor tła: #EEE; ) zestaw pól formularza ( obramowanie: 0; ) zestaw pól formularza p br ( wyczyść: lewy; ) etykieta ( margines u góry: 5 pikseli; wyświetlacz: blok; szerokość: 100 pikseli; dopełnienie: 0; pływak: lewy; ) wejście ( rodzina czcionek: Trebuchet MS; obramowanie: 1px solid #CCC; margines u dołu: 5 pikseli; kolor tła: #FFF; dopełnienie: 2px; ) wejście: najechanie kursorem ( obramowanie: 1px stała #222; kolor tła: #EEE; )

    Rzućmy teraz okiem na kilka zrzutów ekranu pokazujących, jak powinien wyglądać nasz końcowy projekt:

    Formularz logowania.

    Strefa członkowska.

    Formularz rejestracyjny.

    I w końcu...

    I to wszystko! Masz teraz obszar dla członków, którego możesz używać w swojej witrynie. Widzę wiele osób kręcących głowami i krzyczących do monitorów, że to im się nie przyda - masz rację. Mam jednak nadzieję, że wszyscy początkujący w PHP nauczyli się podstaw korzystania z bazy danych i korzystania z sesji do przechowywania informacji. Umiejętności niezbędne do stworzenia dowolnej aplikacji internetowej.

    • Subskrybuj kanał RSS NETTUTS, aby uzyskać więcej codziennych poradników i artykułów na temat tworzenia stron internetowych.

    Dzisiaj przyjrzymy się wykorzystaniu krytycznej 1-dniowej luki w popularnym systemie CMS Joomla, która eksplodowała w Internecie pod koniec października. O lukach będziemy rozmawiać w liczbach CVE-2016-8869, CVE-2016-8870 I CVE-2016-9081. Wszystkie trzy pochodzą z jednego fragmentu kodu, który przez pięć długich lat pozostawał w głębi frameworka, czekając na skrzydłach, by następnie uwolnić się i nieść ze sobą chaos, zhakowane strony i łzy niewinnych użytkowników tej Joomli. Tylko najdzielniejsi i odważni programiści, których oczy są czerwone od światła monitorów i których klawiatury są zasłane okruchami chleba, byli w stanie rzucić wyzwanie szalejącym złym duchom i położyć głowę na ołtarzu poprawek.

    OSTRZEŻENIE

    Wszystkie informacje podane są wyłącznie w celach informacyjnych. Ani redakcja, ani autor nie ponoszą odpowiedzialności za ewentualne szkody wyrządzone przez materiały zawarte w tym artykule.

    Gdzie wszystko się zaczęło

    6 października 2016 roku Demis Palma utworzył temat na Stack Exchange, w którym zapytał: dlaczego w Joomla w wersji 3.6 istnieją dwie metody rejestrowania użytkowników o tej samej nazwie Register()? Pierwszy znajduje się w kontrolerze UsersControllerRegistration, a drugi w kontrolerze UsersControllerUser. Damis chciał wiedzieć, czy gdzieś użyto metody UsersControllerUser::register(), czy też był to po prostu ewolucyjny anachronizm pozostały po starej logice. Jego obawą było to, że nawet jeśli ta metoda nie jest używana w żadnym widoku, można ją wywołać za pomocą spreparowanego zapytania. Na co otrzymałem odpowiedź od programisty o pseudonimie itoctopus, który potwierdził: problem naprawdę istnieje. I wysłał raport do programistów Joomla.

    Wtedy wydarzenia rozwijały się najszybciej. 18 października programiści Joomla zaakceptowali raport Damisa, który do tego czasu przygotował PoC umożliwiający rejestrację użytkownika. Opublikował notatkę na swojej stronie internetowej, w której ogólnie opowiedział o napotkanym problemie i swoich przemyśleniach na ten temat. Tego samego dnia zostaje wypuszczona nowa wersja Joomla 3.6.3, która w dalszym ciągu zawiera lukę w kodzie.

    Następnie Davide Tampellini odwraca błąd do tego stopnia, że ​​rejestruje nie prostego użytkownika, ale administratora. A 21 października do zespołu ds. bezpieczeństwa Joomla trafia nowa sprawa. Mówi się już o zwiększeniu przywilejów. Tego samego dnia na stronie Joomla pojawia się komunikat, że we wtorek 25 października ukaże się kolejna wersja o numerze seryjnym 3.6.3, która naprawia krytyczną lukę w jądrze systemu.

    25 października Zespół Joomla Security Strike Team znajduje najnowszy problem spowodowany fragmentem kodu odkrytym przez Damisa. Następnie zatwierdzenie z 21 października o niepozornej nazwie „Preparing 3.6.4 Stable Release” zostaje wypychane do głównej gałęzi oficjalnego repozytorium Joomla, co naprawia niefortunny błąd.

    Po tym wydaniu do społeczności programistów dołącza wiele zainteresowanych osób, które zaczynają promować lukę i przygotowywać exploity.

    27 października badacz Harry Roberts przesyła do repozytorium Xiphos Research gotowy exploit, który może przesłać plik PHP na serwer z podatnym na ataki systemem CMS.

    Detale

    Cóż, tło się skończyło, przejdźmy do najciekawszej części - analizy podatności. Zainstalowałem Joomla 3.6.3 jako wersję testową, więc wszystkie numery linii będą istotne dla tej wersji. Wszystkie ścieżki do plików, które zobaczysz poniżej, zostaną wskazane w odniesieniu do katalogu głównego zainstalowanego CMS-a.

    Dzięki odkryciu Damisa Palmy wiemy, że istnieją dwie metody dokonujące rejestracji użytkownika w systemie. Pierwszy z nich jest używany przez CMS i znajduje się w pliku /components/com_users/controllers/registration.php:108. Drugi (ten, który będziemy musieli wywołać) znajduje się w /components/com_users/controllers/user.php:293. Przyjrzyjmy się temu bliżej.

    286: /** 287: * Metoda rejestracji użytkownika. 288: * 289: * @return boolean 290: * 291: * @since 1.6 292: */ 293: funkcja publiczna Register() 294: ( 295: JSession::checkToken("post") lub jexit(JText::_ („JINVALID_TOKEN”)); ... 300: // Pobierz dane formularza. 301: $data = $this->input->post->get("user", array(), "array"); . .. 315: $return = $model->validate($form, $data); 316: 317: // Sprawdź błędy 318: if ($return === false) 319: ( ... 345: / / Zakończ rejestrację 346: $return = $model->register($data);

    Tutaj zostawiłem tylko ciekawe linie. Pełną wersję podatnej metody można obejrzeć w repozytorium Joomla.

    Zastanówmy się, co dzieje się podczas normalnej rejestracji użytkownika: jakie dane są przesyłane i jak są przetwarzane. Jeżeli w ustawieniach włączona jest rejestracja użytkownika, formularz znajdziesz pod adresem http://joomla.local/index.php/component/users/?view=registration.


    Prawidłowe żądanie rejestracji użytkownika wygląda jak na poniższym zrzucie ekranu.


    Za współpracę z użytkownikami odpowiada komponent com_users. Zwróć uwagę na parametr task w żądaniu. Ma format $controller.$method . Przyjrzyjmy się strukturze plików.

    Nazwy skryptów w folderze kontrolery odpowiadają nazwom wywoływanych kontrolerów. Ponieważ nasze żądanie zawiera teraz $controller = "registration" , plik zostanie wywołany rejestracja.php i jego metoda Register().

    Uwaga, pytanie: jak przenieść przetwarzanie rejestracji do wrażliwego miejsca w kodzie? Prawdopodobnie już się tego domyśliłeś. Nazwy metod podatnych i metod rzeczywistych są takie same (rejestr), więc wystarczy zmienić nazwę wywoływanego kontrolera. Gdzie znajduje się nasz wrażliwy kontroler? Zgadza się, w pliku użytkownik.php. Okazuje się, że $controller = "user" . Łącząc wszystko otrzymujemy task = user.register . Teraz żądanie rejestracji jest przetwarzane w sposób, którego potrzebujemy.


    Drugą rzeczą, którą musimy zrobić, to wysłać dane w odpowiednim formacie. Tutaj wszystko jest proste. Uprawniona rejestracja() oczekuje od nas tablicy o nazwie jform , w której przekazujemy dane rejestracyjne - imię i nazwisko, login, hasło, adres e-mail (patrz zrzut ekranu z żądaniem).

    • /components/com_users/controllers/registration.php: 124: // Pobierz dane użytkownika. 125: $requestData = $this->input->post->get("jform", array(), "array");

    Nasz klient pobiera te dane z tablicy zwanej user.

    • /components/com_users/controllers/user.php: 301: // Pobierz dane formularza. 302: $data = $this->input->post->get("użytkownik", tablica(), "tablica");

    Dlatego zmieniamy nazwy wszystkich parametrów w żądaniu z jfrom na user .

    Naszym trzecim krokiem jest znalezienie prawidłowego tokena CSRF, ponieważ bez niego nie będzie rejestracji.

    • /components/com_users/controllers/user.php: 296: JSession::checkToken("post") lub jexit(JText::_("JINVALID_TOKEN"));

    Wygląda jak skrót MD5 i możesz go pobrać na przykład z formularza autoryzacyjnego na stronie /index.php/component/users/?view=login.


    Teraz możesz tworzyć użytkowników przy użyciu żądanej metody. Jeśli wszystko się udało, gratulacje - właśnie wykorzystałeś lukę CVE-2016-8870„Brak kontroli uprawnień do rejestracji nowych użytkowników.”

    Tak to wygląda w „działającej” metodzie Register() z kontrolera UsersControllerRegistration:

    • /components/com_users/controllers/registration.php: 113: // Jeśli rejestracja jest wyłączona - Przekieruj do strony logowania. 114: if (JComponentHelper::getParams("com_users")->get("allowUserRegistration") == 0) 115: ( 116: $this->setRedirect(JRoute::_("index.php?option=com_users&view= login", fałsz)); 117: 118: zwróć fałsz; 119: )

    I tak w przypadku bezbronności:

    • /components/com_users/controllers/user.php:

    Tak, nie ma mowy.

    Aby zrozumieć drugi, znacznie poważniejszy problem, wyślijmy utworzone przez nas żądanie i zobaczmy, jak jest ono wykonywane w różnych częściach kodu. Oto element odpowiedzialny za weryfikację danych przesłanych przez użytkownika w metodzie roboczej:

    Kontynuacja jest dostępna tylko dla członków

    Opcja 1. Dołącz do społeczności „site”, aby zapoznać się ze wszystkimi materiałami w serwisie

    Członkostwo w społeczności w określonym terminie zapewni Ci dostęp do WSZYSTKICH materiałów Hackera, zwiększy Twoją osobistą zniżkę kumulacyjną i pozwoli Ci zgromadzić profesjonalną ocenę Xakep Score!

    Cześć! Teraz postaramy się zaimplementować najprostszą rejestrację na stronie za pomocą PHP + MySQL. Aby to zrobić, na komputerze musi być zainstalowany Apache. Zasada działania naszego skryptu pokazana jest poniżej.

    1. Zacznijmy od utworzenia tabeli użytkowników w bazie danych. Będzie zawierać dane użytkownika (login i hasło). Przejdźmy do phpmyadmin (jeśli tworzysz bazę danych na swoim komputerze http://localhost/phpmyadmin/). Utwórz tabelę użytkownicy, będzie miał 3 pola.

    Tworzę go w bazie danych mysql, możesz utworzyć go w innej bazie danych. Następnie ustaw wartości jak na rysunku:

    2. Wymagane jest połączenie z tą tabelą. Utwórzmy plik bd.php. Jego zawartość:

    $db = mysql_connect("twój serwer MySQL","login do tego serwera","hasło do tego serwera");
    mysql_select_db („nazwa bazy danych, z którą się łączymy”, $db);
    ?>

    W moim przypadku wygląda to tak:

    $db = mysql_connect("localhost","użytkownik","1234");
    mysql_select_db("mysql",$db);
    ?>

    Ratować 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
















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



    {
    }
    //jeśli zostanie podany login i hasło, to je przetwarzamy, aby tagi i skrypty nie działały, nigdy nie wiadomo, co ktoś może wpisać


    //usuń dodatkowe spacje
    $login = trim($login);
    $hasło = trim($hasło);
    //połącz się z bazą danych
    // sprawdź, czy istnieje użytkownik o tym samym loginie
    $result = mysql_query("WYBIERZ identyfikator OD użytkowników GDZIE login="$login"",$db);
    if (!empty($myrow["id"])) (
    exit("Przepraszamy, podany login jest już zarejestrowany. Proszę podać inny login.");
    }
    // jeśli tak nie jest, zapisz dane
    $result2 = mysql_query("WSTAW DO użytkowników (login,hasło) WARTOŚCI("$login","$hasło")");
    // Sprawdź, czy występują błędy
    jeśli ($result2=="TRUE")
    {
    echo "Zarejestrowałeś się pomyślnie! Teraz możesz wejść na stronę. Strona główna";
    }
    w przeciwnym razie(
    echo "Błąd! Nie jesteś zarejestrowany.";
    }
    ?>

    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):

    // cała procedura działa w sesjach. To w nim przechowywane są dane użytkownika podczas jego pobytu na stronie. Bardzo ważne jest, aby uruchomić je na samym początku strony!!!
    początek_sesji();
    ?>


    Strona główna


    Strona główna











    Rejestr



    // Sprawdź, czy zmienne login i identyfikator użytkownika są puste
    if (pusty($_SESSION["login"]) lub pusty($_SESSION["id"]))
    {
    // Jeśli puste, to nie wyświetlamy linku
    echo "Jesteś zalogowany jako gość
    Ten link jest dostępny tylko dla zarejestrowanych użytkowników";
    }
    w przeciwnym razie
    {

    W pliku indeks.php Wyświetlimy link, który będzie otwarty tylko dla zarejestrowanych użytkowników. O to właśnie chodzi w skrypcie - aby ograniczyć dostęp do dowolnych danych.

    6. Pozostaje plik z weryfikacją wprowadzonego loginu i hasła. testreg.php (komentarze w środku):

    session_start();// cała procedura działa na sesjach. To w nim przechowywane są dane użytkownika podczas jego pobytu na stronie. Bardzo ważne jest, aby uruchomić je na samym początku strony!!!
    if (isset($_POST["login"])) ( $login = $_POST["login"]; if ($login == "") ( unset($login);) ) //wprowadź login wprowadzony przez użytkownika do zmiennej $login, jeśli jest pusta, zniszcz zmienną
    if (isset($_POST["hasło"])) ( $hasło=$_POST["hasło"]; if ($hasło =="") ( unset($hasło);) )
    //wpisz hasło wprowadzone przez użytkownika w zmiennej $password, jeśli jest pusta, zniszcz zmienną
    if (empty($login) lub pusty($password)) //jeżeli użytkownik nie podał loginu lub hasła to zgłaszamy błąd i zatrzymujemy skrypt
    {
    exit("Nie podałeś wszystkich informacji, wróć i wypełnij wszystkie pola!");
    }
    //jeśli zostanie podany login i hasło, to je przetwarzamy, aby tagi i skrypty nie działały, nigdy nie wiadomo, co ktoś może wpisać
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
    $hasło = paski ukośników($hasło);
    $hasło = htmlspecialchars($hasło);
    //usuń dodatkowe spacje
    $login = trim($login);
    $hasło = trim($hasło);
    //połącz się z bazą danych
    include("bd.php");// plik bd.php musi znajdować się w tym samym folderze co wszystkie pozostałe, jeśli nie, po prostu zmień ścieżkę

    $result = mysql_query("WYBIERZ * OD użytkowników GDZIE login="$login"",$db); //pobierz z bazy wszystkie dane o użytkowniku z wprowadzonym loginem
    $myrow = mysql_fetch_array($wynik);
    if (pusty($myrow["hasło"]))
    {
    //jeżeli użytkownik o podanym loginie nie istnieje
    }
    w przeciwnym razie(
    //jeśli istnieje, sprawdź hasła
    if ($myrow["hasło"]==$hasło) (
    //jeśli hasła są zgodne, uruchamiamy sesję dla użytkownika! Można mu pogratulować, dostał się!
    $_SESSION["login"]=$myrow["login"];
    $_SESSION["id"]=$myrow["id"];//te dane są wykorzystywane bardzo często, dlatego zalogowany użytkownik będzie je „nosił przy sobie”
    echo "Wszedłeś pomyślnie na stronę! Strona główna";
    }
    w przeciwnym razie(
    //jeśli hasła nie pasują

    Wyjdź („Przepraszamy, wprowadzony login lub hasło jest nieprawidłowe.”);
    }
    }
    ?>

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

    Sprawdziłem wszystko, działa poprawnie!

    Nowość na stronie

    >

    Najbardziej popularny