Това е модифициран откъс от моята книга за това как да създадете уеб базирано приложение с PHP. Пълният код за този урок може да бъде намерен на GitHub.
Този пример е много опростен и не предоставя детайлите стъпка по стъпка, които има моята книга. В моята книга „Регистрация на потребител“ (глава 22) е 14 страници, а „Вход на потребител“ (глава 23) е 8 страници.
Имам шепа файлове, които определят оформлението на уебсайта и някои персонализирани функции, които са разпределени в множество файлове. За този урок ще комбинирам всичко в един файл, наречен functions.php
Обяснение на functions.php:
- Ред 2: session_start() — Вградена PHP функция, която ви позволява да запомните влязъл потребител (целта на този урок!).
- Редове 4–17: Връзка с база данни. Тук използвам MySQL база данни. Очевидно попълнете идентификационните данни на вашата база данни.
- Ред 19: Променлива, която запомня потребителския идентификатор на лицето, влязло в системата. Тя е заобиколена от вградената PHP функция intval()така че, ако е необходимо, да бъде преобразувана в „0“ ( което показва, че потребител все още не е влязъл). Ще видим как да получим/попълним тази стойност по-късно в урока.
- Редове 24–37: Функция за определяне на оформлението на уебсайта (горната част на всяка страница; основно включва само Bootstrap CSS).
- Редове 39–44: Функция за определяне на оформлението на уебсайта (долната част на всяка страница; основно затваря само BODY и HTML таговете).
Някои общи предположения:
- Ако лицето, разглеждащо уебсайта ви, има потребителско име „0“, значи не все още е влязло в системата. Ако потребителското име е число, по-голямо от „0“, тогава са strong> влезли в системата.
- Имате таблица с база данни, наречена „Потребители“, с 3 полета:
- id (автоматично увеличаващо се цяло число, което е първичен ключ)
- имейл (текст)
- парола (текст)
Създаване на формуляри за регистрация и вход
Създайте sign-up.phpи включете файла functions.php:
Изглежда така:
Нека също така създадем страницата за влизане / влизане, наречена sign-in.php
Което изглежда така:
Всяка форма е относително проста със следните компоненти:
- Текстово поле за имейла на потребителя
- Текстово поле за паролата на потребителя
- Скрито текстово поле (ред 21 във всеки файл), така че да знаем дали потребителят се регистрира или влиза
- Бутон за изпращане
И в двата случая на регистрация/влизане, когато потребителят натисне бутона „изпращане“, той ще бъде отведен до страница, наречена controller.php. Ще има два блока код; един за откриване на регистрирани потребители (редове 5–37) и друг блок за откриване на потребители, които влизат (редове 39–87).
Общи бележки:
- Първо, включете файла functions.php.
- Използвайки вградената PHP функция array_key_exists(), ние проверяваме за стойността на „sign_up“ или „sign_in“. Това бяха стойностите на скритото текстово поле на съответните им страници.
Обяснение за регистрация:
- Редове 10 и 11: Вземете имейла и паролата на потребителя, поставени в текстовите полета.
В идеалния случай бихте отчитали SQL Injection и имали различни проверки за валидиране (този потребител регистрирал ли се е вече? празна ли е паролата? и т.н.). Това беше пропуснато за този основен урок, но е разгледано в моята книга.
- Редове 25–29: Вмъкнете данните на този потребител от формуляра в базата данни.
- Ред 33: Вградената PHP функция mysql_insert_id() ще получи последния идентификатор на ред в базата данни (ако приемем, че вашата база данни е MySQL и първичният ключ е настроен на автоматично нарастване). След като имаме тази стойност, присвоете я на променлива SESSION. Това е вградена PHP функция точно за тази цел (за записване на „сесията“ на потребителя; т.е. уеб страницата да помни кои са те, докато преминават от страница към страница).
- Ред 34: Пренасочване на потребителя към началната страница.
Обяснение за подписване/влизане:
- Редове 41 и 42: Вземете имейла и паролата на потребителя, поставени в текстовите полета.
- Редове 45–61: Вземете паролата на потребителя въз основа на имейла, който е въведен.
- Редове 71–80: Ако паролата на потребителя съвпада с очакваното, задайте променливата SESSION и пренасочете потребителя към частта на уебсайта, в която е влязъл.
- Редове 80–85: Ако паролата на потребителя не съответства на това, което трябва да бъде, пренасочете потребителя другаде. Също така включете допълнителна част в URL адреса, за да покажете грешка на потребителя (обяснено веднага).
За този урок потребителят се пренасочва към index.php (без значение какво), което ще покаже дали потребителят е влязъл или не. Ако е необходимо, ще има предупреждение, показващо, че потребителят не е успял да влезе.
Обяснение на index.php:
- Ред 1: Включва файла functions.php, който съдържа нашата връзка с база данни, някои шаблони за HTML/CSS и най-важното за този урок, начин да видите дали потребителят е влязъл.
- Ред 10: Проверява дали има променлива GET (т.е. от URL адреса), наречена „action“, и дали стойността е „invalid-login“. Ако е така, покажете DIV на редове 12–14, което показва, че потребителят не е успял да влезе.
- Редове 21–32: Тъй като потребителският идентификатор е „0“, потребителят не е влязъл. В този случай покажете подходящото съдържание (например връзка към Регистрация или Вход).
- Редове 32–38: Идентификаторът на потребителя не е 0, така че те савлезли. Покажете подходящото съдържание. В момента показвам само ID на потребителя.
Потребителят най-вероятно няма да се интересува от своя ID за вашето уеб приложение; но сега, когато вие (разработчикът) знаете потребителския идентификатор, можете да им покажете подходяща информация.
Ако потребителят е влязъл:
Ако потребителят получи грешка:
Това е!
Това трябваше да бъде прост урок. Пълният код за този PHP урок за това как да създадете потребителско влизане може да бъде намерен тук в GitHub.
Както споменах по-рано, моята книга навлиза в допълнителни подробности; включително проверка (както с JavaScript от страна на клиента, така и с PHP от страна на сървъра), файлова организация (напр. множество файлове за оформления и персонализирани функции), допълнителни персонализирани функции (така че има по-малко код във всеки файл) и има някои общи съвети за използваемост /препоръки.
Други неща, които трябва да имате предвид:
- Добавете квадратче за отметка за „Запомни ме“, за да предотвратите необходимостта потребителят да влиза всеки път, когато затвори браузъра.
- Шифровайте (известен още като „SALT“) паролата на потребителя, след като е във вашата база данни.
- Как може потребител да „излезе“.
Харесва ли ви този стил на писане? 👍👍Създавате ли PHP уеб приложение и вече знаете какво е „променлива“ и концепцията за израз „if“? Вижте книгата ми: Уеб разработка за средно напреднали програмисти — с PHP