Регистрация и Авторизация на PHP MySQL

Что такое auth0?

Auth0 – это аутентификация как служебный инструмент, который упрощает реализацию функций, связанных с проверкой подлинности на вашем сайте. Если вы создали приложение и хотите просто передать функции аутентификации и авторизации, такой сервис, как Auth0, вы должны рассмотреть.

Позвольте мне кратко изложить, что Auth0 может предложить:

  • единый вход в систему
  • многофакторная аутентификация
  • вход в систему без пароля
  • Управление пользователями
  • и многое другое

В этой статье мы рассмотрим несколько методов единого входа, которые вы можете реализовать в своих веб-приложениях, чтобы использовать функции аутентификации, предоставляемые службой Auth0.

В первой половине статьи мы рассмотрим, как настроить базовую функцию аутентификации в веб-приложении на стороне сервера. Во второй половине я объясню, как вы можете защитить свои пользовательские API, установив авторизацию OAuth с помощью службы Auth0.

Кое-что для проверки адресов электронной почты

  1. Fgribreau/mailchecker – эта библиотека для тех, кто не уверен, существует ли на самом деле введенный пользователем электронный адрес;
  2. Egulias/EmailValidator – еще один репозиторий с готовыми решениями для проверки электронных адресов в PHP.

Описание веток

sozdanie-formy-registratsii-i-avtorizatsii-v-php – В этой ветке находятся исходники функционала, который был реализован в статье Создание формы регистрации и авторизации

The Logout script

Finally, Let’s create a logout.php file with the following code in it.

Login-script

Мы начнем с файла login.php.

Php: getting started using auth0-php

The Auth0-PHP SDK integrates into your PHP applications providing straightforward user login and signup. It supports social identity providers such as Facebook, Google, or Twitter, as well as enterprise providers such as Active Directory. The SDK provides convenient methods for accessing Auth0’s Authentication and Management endpoints.

Похожее:  Ошибка аутентификации Wi-Fi на телефоне Android: быстрое решение

The Auth0-PHP repository is open source and hosted on GitHub. We appreciate all contributions, including bug reports, enhancement proposals, and pull requests.

Installing the Auth0 PHP SDK requires Composer, the standard dependency management utility for PHP. Composer allows you to declare the dependent libraries your project needs and installs them for you. Please ensure Composer is installed and accessible from your shell before continuing.

Next, run the following shell command within your project directory to install the SDK:

This will create a

vendor

subfolder within your project and download all the dependencies needed to use the PHP SDK. This will also create a

vendor/autoload.php

file necessary for the SDK to work with your application, which we’ll import later.

To use the Auth0 Authentication and Management APIs, you’ll need a free Auth0 account and an Application:

  1. Go to vhod-v-lichnyj-kabinet.ru/signup and create your account.

  2. Once you are in the dashboard, go to Applications, then Create Application.

  3. Give your Application a name, select Regular Web Application, then Create

  4. Click the Settings tab for the required credentials used below. To learn more, see Application Settings.

You should use environment variables to store and load sensitive Auth0 credentials. This eliminates the need for hard-coding them into your application. Let’s create an .env file within the root of our project directory to store our application’s credentials:

The easiest way to use environment variables in your project is to use a library like PHP Dotenv along with a local .env file. Create a .env file (make sure this is not accessible publicly and is excluded from version control) and add the following values:

You should never commit this file to version control or share it in an unsecure manner. The contents should be handled with care and treated like a password.

As PHP is unable to read our .env file natively, you’ll need to install a PHP library to do so. For the purposes of this documentation we’ll be using vlucas/phpdotenv, but any “dotenv” library you prefer will work. From our project directory, run the following shell command to install the library:

We’re ready to configure and initialize an instance of the SDK within our new PHP application. Let’s start by creating the PHP source file we’ll be working with for this demonstration, index.php, and use the following snippet to get started:

Congratulations! Your application is now set up and ready to use with Auth0. You can now move on to building an example application using one of our PHP quickstarts. Choose the type of application you’re looking to build to follow along with a quickstart suited for your needs:

Step 1: creating a login form in html

Below is the Login Form in HTML. Paste it in a file named login.php

Step 1: creating registration form in html

We will create a PHP file named register.php with the following code in it. This is a simple HTML form with some basic validation. If you are not familiar with HTML then you can get it from many online sites who give ready-made html5 login form templates.

Архив обновлен 24.02.2022г.

Внимание:
Если вы используете данный скрипт на локальном сервере типа
DENWER XAMPP
, то не
стоит ждать писем на свой почтовый ящик. Письма лежат в заглушке
sendmail
. В
Denwer
вы их можете
найти по пути
Z:tmp!sendmail
открыть данные файлы вы сможете в любом почтовом клиенте.

Библиотеки для аутентификации и авторизации

  1. Aura.Auth обеспечивает функциональность аутентификации и отслеживание сеансов с использованием различных адаптеров;
  2. Opauth фреймворк аутентификации с несколькими провайдерами;
  3. Sentinel Socialбиблиотека для аутентификации в социальных сетях;
  4. Sentinelнезависимая от фреймворка библиотека аутентификации и авторизации;
  5. PHPGangsta/GoogleAuthenticator – у этой библиотеки есть не только мощное название, но и развитая функциональность: с ней вы сможете реализовать двухфакторную аутентификацию через Google.

Библиотеки для работы с датой и временем

  1. CalendR библиотека управления календарем;
  2. Carbon простое расширение API DateTime;
  3. Yasumi библиотека, которая поможет вам рассчитать даты и названия праздников.

Библиотеки для работы с разметкой

  1. Cebe/Markdown быстрый и расширяемый парсер Markdown;
  2. Decodaлегкая библиотека парсера разметки;
  3. Emoji библиотека, преобразующая символы и имена Unicode в изображения смайликов;
  4. HTML в Markdown преобразует HTML в Markdown;
  5. HTML5 PHP библиотека парсера и сериализатора HTML5;
  6. PHP Markdown парсер Markdown.

Библиотеки для управления качеством кода и форматированием

  1. PHP CodeSniffer библиотека, которая обнаруживает нарушения стандартов кода PHP, CSS и JS;
  2. PHP CS Fixer библиотека для исправления стандартов кодирования;
  3. PHP Mess Detector библиотека, которая сканирует код на наличие ошибок, неоптимальных решений, неиспользуемых параметров и многого другого.

Библиотеки и приложения для приема платежей и интернет-магазинов

  1. Money реализация денежного шаблона Фаулера на PHP;
  2. Brick/Money финансовая библиотека для PHP с поддержкой контекстов, округления сумм и конвертации валют;
  3. OmniPay независимая от платформы библиотека для обработки платежей с несколькими шлюзами;
  4. Swap библиотека курсов валют.

Все для парсинга сайтов

  1. Imangazaliev/Didom – очень быстрый парсер и HTML-scrapper;
  2. Oscarotero/Embed – хорошее решение для извлечения любой информации с веб- страницы;
  3. Friensofphp/Goutte – простой web-scrapper;
  4. Symfony/Panther – библиотека тестирования браузера для PHP и Symfony;
  5. Mvdbos/Php-Spiderнастраиваемый и расширяемый PHP-парсер.

Вызов конечной точки пользовательского api

После того, как у вас есть токен доступа, вы можете вызвать свою конечную точку API, включив ее в заголовок.

Давайте посмотрим, как работает этот код!

Сначала мы подготовили ссылку, которая отправляет пользователя на сервер Auth0, чтобы начать поток авторизации.

Защитите свои пользовательские api с помощью oauth2

В этом разделе мы рассмотрим, как вы можете защитить свои пользовательские API, выполнив поток предоставления кода авторизации OAuth2. Надеюсь, вы знакомы со стандартным потоком предоставления кода авторизации, так как мы не будем вдаваться в подробности этого. Ознакомьтесь с некоторыми нашими другими сообщениями здесь, на Envato Tuts , если вы хотите ускориться с OAuth2.

Вместо этого мы сразу же погрузимся в реальную реализацию. Идем дальше и создаем файл auth_code_grant_example.php со следующим содержимым.

Индексный файл

Наконец, давайте рассмотрим файл index.php, который является точкой входа нашего приложения.

Инструменты для построения навигационных структур

  1. KnpMenu библиотека меню;
  2. Menu гибкая библиотека меню с понятным интерфейсом.

Инструменты для работы с паролями

  1. Timoh6/GenPhraseгенерируем безопасные случайные парольные фразы;
  2. Ircmaxell/Password_compact – работа с совместимостью новых функций паролей PHP 5.5;
  3. Hackzilla/Password-Generator – полезное решение для генерации случайных паролей;
  4. Ircmaxell/PHPPasswordlib – еще одно решение для работы с генерацией и проверкой паролей.

Интеграция аутентификации на стороне сервера

В этом разделе мы рассмотрим, как можно быстро настроить базовую аутентификацию для серверных веб-приложений с использованием Auth0. Фактически команда Auth0 уже предоставляет удобный пример GitHub, который демонстрирует основные примеры, поэтому мы будем использовать это вместо того, чтобы изобретать колесо.

Прежде чем двигаться вперед, обязательно установите Composer, поскольку он будет использоваться для установки фактических SDK Auth0 с использованием файла composer.json. Кроме того, если вы хотите следовать вместе с примерами в этой статье, продолжайте и получите бесплатную учетную запись с Auth0.

Когда нужно разобрать url

  1. Jeremykendall/PHP-DomainParser библиотека для парсинга суффиксов домена;
  2. Jwage/Purl библиотека для работы с URL;
  3. Sabre-io/Uri функциональная библиотека для взаимодействия с URL;
  4. Uri еще одна библиотека для работы с URL.

Конечная точка api с защитой auth0

Файл фиктивного файла API demo_api_server.php может выглядеть примерно так:

Настройка проекта

Давайте двигаться вперед и захватим копию образцов проекта.

Несколько решений для работы с изображениями

  1. Thephpleague/ColorExtractor – если надо извлечь цвет из изображения, эта библиотека определенно для вас;
  2. Thephpleague/Glide – набор решений для обработки img по запросу;
  3. Jenssegers/ImageHash библиотека для создания хэша изображений;
  4. Psliwa/ImageOptimizer все необходимое для оптимизации изображения;
  5. Intervention/Image – если нужно обработать картинку, вам сюда.

Подключение к базы данных

В корневую папку сайта, создаем файл с названием “dbconnect.php”. В этом файле, добавляем следующий код:

  <?php
      // Указываем кодировку
      header('Content-Type: text/html; charset=utf-8');

      $server = "localhost"; /* имя хоста (уточняется у провайдера), если работаем на локальном сервере, то указываем localhost */
      $username = "имя_пользователя_бд"; /* Имя пользователя БД */
      $password = "пароль_пользователя_бд"; /* Пароль пользователя, если у пользователя нет пароля то, оставляем пустым */
      $database = "имя_базы_данных"; /* Имя базы данных, которую создали */

      // Подключение к базе данный через MySQLi
      $mysqli = new mysqli($server, $username, $password, $database);

      // Проверяем, успешность соединения. 
      if ($mysqli->connect_errno) {
              die("<p><strong>Ошибка подключения к БД</strong></p><p><strong>Код ошибки: </strong> ". $mysqli->connect_errno ." </p><p><strong>Описание ошибки:</strong> ".$mysqli->connect_error."</p>");
      }

      // Устанавливаем кодировку подключения
      $mysqli->set_charset('utf8');

      //Для удобства, добавим здесь переменную, которая будет содержать название нашего сайта
      $address_site = "http://testsite.local";
  ?>

Полезные библиотеки, не вошедшие в топ

  1. BitExpert/disco – контейнер на PHP, совместимый со стандартом PSR-11;
  2. Malukenho/PsyGit – кому-то может понравиться эта библиотека, которая позволяет работать с Git через PHP;
  3. Wapmorgan/Morphos – библиотека для тех, кто следит за грамотностью, ее основные функции: правильное склонение имен существительных, географических названий и количественных числительных;
  4. PHPOffice/PhpSpreadsheet – библиотека для работы с таблицами Excel;
  5. Mjaschen/phpgeo – библиотека для работы с географическими координатами;
  6. Seldaek/monolog – библиотека для логирования;
  7. Filp/whoops – библиотека для красивого вывода ошибок в браузере – другими словами, whoops.

***

Рейтинг фреймворков – понятие относительное. Преимущество той или иной библиотеки заключается совсем не цифрах, а в обычном удобстве. Используйте их для решения своих повседневных задач или, по мере необходимости, для каждого отдельного случая.

Если вы не увидели в нашем списке своих любимых библиотек PHP, пожалуйста, не стесняйтесь рекомендовать их в комментариях. Нам важно ваше мнение.

Получение маркера доступа

Когда пользователь нажимает на ссылку «Вход», они будут отправлены на сервер Auth0 для аутентификации. После аутентификации им будет предложено разрешить приложению доступ к вашему профилю. После авторизации пользователь будет перенаправлен обратно в ваше приложение с кодом в качестве параметра $ _GET.

Затем мы можем обменять этот код, чтобы получить токен доступа.

Проверка маркера доступа

Вы обязаны проверять токен доступа, прежде чем предоставлять доступ к защищенному ресурсу. И это именно то, что мы сделали в следующем фрагменте. Мы использовали класс утилиты JWTVerifier для проверки токена доступа.

Решения для маршрутизации приложений

  1. AuraRouter многофункциональная библиотека маршрутизации;
  2. FastRoute – набор методов для скоростноймаршрутизации;
  3. Klein/Klein – удобный маршрутизатор;
  4. C9s/Pux очередная библиотека, используемая для настройки маршрутизации.

Решения для создания шаблонов

  1. Arnault-rb/MtHaml – тут прописаны инструменты для реализации шаблонов HAML в PHP;
  2. Bobthecow/Mustаcheинструменты для реализации шаблонов с использованием фигурных скобок на PHP;
  3. Plates – стандартная PHP-библиотека с множеством шаблонов.

Структура таблицы: bez_reg


--
-- Структура таблицы `bez_reg`
--

CREATE TABLE IF NOT EXISTS `bez_reg` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(200) NOT NULL,
  `pass` varchar(32) NOT NULL,
  `salt` varchar(32) NOT NULL,
  `active_hex` varchar(32) NOT NULL,
  `status` int(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Сценарий выхода

Затем давайте быстро взглянем на файл logout.php.

Файл reg_form.html

Так как регистрация пользователей у нас готова, самое время написать авторизацию. Создадим форму для авторизации
пользователей, далее напишем обработчик формы авторизации и на последок сделаем скрипт show.php который
будет показывать нам авторизированны мы в системе или нет.

Файлы проекта

Давайте быстро рассмотрим каждый файл в стартовом проекте.

Заключение

Сегодня мы прошли через службу Auth0, которая обеспечивает аутентификацию и авторизацию в качестве службы. После введения службы Auth0 мы рассмотрели несколько практических примеров, чтобы продемонстрировать, как вы могли бы интегрировать их с вашими PHP-приложениями.

Пожалуйста, не стесняйтесь размещать свои предложения и запросы, используя приведенный ниже канал!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *