Това е модифициран откъс от моята книга за това как да създадете уеб базирано приложение с 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 полета:
  1. id (автоматично увеличаващо се цяло число, което е първичен ключ)
  2. имейл (текст)
  3. парола (текст)

Създаване на формуляри за регистрация и вход

Създайте 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