Авторизация с помощью сессий на PHP (3)


Содержание

Как с помощью PHP и MySQL создать систему регистрации и авторизации пользователей

Безопасная система авторизации и регистрации является одним из важнейших элементов при создании проекта с нуля. Один из возможных способов — это создание системы регистрации с помощью PHP и MySQL .

Хотя в Интернете есть много пособий на эту тему, большинство из них предназначено для продвинутых пользователей.

Эта статья расскажет о том, как создать простую версию системы авторизации и регистрации пользователей с использованием PHP и MySQL для начинающих. Давайте начнем!

Ресурсы, необходимые для работы с этим руководством:

  • Xampp ( PHP версии 5.3 или более поздней и MySQL версии 4.1.3 или более поздней );
  • Базовые знания по PHP , HTML и CSS ;
  • Время и терпение.

Что мы создаем

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

Вы можете использовать любой хостинг с поддержкой PHP и MySQL ( только убедитесь, что он поддерживает PHP версии 5.3 или более поздней и MySQL версии 4.1.3 или более поздней ).

Но в этой статье в качестве сервера будет использоваться Xampp . Если до этого не работали с Xampp , эта статья может помочь вам разобраться, как его должным образом установить на вашем компьютере.

Шаг 1 – MySQL

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

Взгляните на приведенный ниже код SQL :

Обратите внимание, что все данные представляют собой varchar , и даже пароль позже будет преобразован в символ md5 , чтобы обеспечить его безопасность.

Кроме того, используйте auto_increment для автоматического назначения идентификаторов или номеров пользователям, которые будут регистрироваться в системе.

Теперь, когда таблица создана, нужно задать разметку и стили CSS , а затем PHP -код.

Шаг 2 — Разметка

Для разметки, нам нужно включить три файла, и все они должны быть сохранены в формате « .php «, так как мы создаем программу сценариев на стороне сервера.

Сначала создайте файл login.php . Скопируйте в него приведенный ниже код:

С помощью этого кода вы получите результат, который показан на рисунке ниже:

Далее, создаем файл register.php . Скопируйте и вставьте в него приведенный ниже код:

С помощью этого кода вы получите следующий результат:

Далее, создаем файл intropage.php . Он будет служить в качестве страницы приветствия после того, как пользователь успешно авторизовался в системе:

Этот код даст нам следующий результат:

Шаг 3 — CSS

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

К этому времени, вы уже должны получить тот же результат, что и на изображении, приведенном в начале статьи.

Шаг 4 — Многоразово используемые элементы

Теперь, когда у вас готовы разметка и стили CSS , попробуйте задействовать такие многоразово используемые элементы, как раздел заголовка и раздел подвала. В корневой папке создайте новую папку и назовите ее “ includes “.

В ней будут содержаться все включаемые файлы. Затем в папке includes создайте новый файл и назовите его header.php . Скопируйте часть раздела заголовка в каждый из трех PHP -файлов, созданных нами ранее. Таким образом, у вас получится:

Следующее, что вам нужно сделать, это удалить разметку, скопированную из файла header.php во всех трех PHP -файлах и заменить ее следующим PHP -кодом:

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

Затем снова удалите эту часть во всех трех файлах PHP и замените ее следующим кодом:

Шаг — 5 Подключение к базе данных

Теперь, когда вы включили файлы разделов заголовка и подвала, пора создать новый включаемый файл. Назовите его constants.php и скопируйте в него следующий код:

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

Далее, в папке includes создайте новый файл и назовите ее connection.php . В нем будут храниться коды подключения к базе данных. Скопируйте и вставьте в него код, приведенный ниже:

Обратите внимание, что вам обязательно требуется файл constants.php . Если при подключении возникнет ошибка, с его помощью будет остановлено выполнение скрипта и выдано сообщение об ошибке.

Включите файл connection.php в файлах login.php и register.php , так как эти два файла необходимы для кода управления подключением. Скопируйте приведенный ниже код и вставьте его перед включением файла header.php :

Шаг — 6 Конфигурация файла register.php

Теперь необходимо преобразовать форму регистрации в полноценную систему регистрации. Чтобы сделать это, нужно добавить включение еще нескольких файлов PHP после включения header.php . Скопируйте и вставьте приведенный ниже код в файл register.php :

В приведенном выше коде, обратите внимание, что перед добавлением данных в базу производится их валидация. Переменная message используется для хранения сообщения об ошибках или об успешном выполнении действия.

Шаг — 6 Конфигурация файла login.php

Теперь, когда пользователи могут регистрироваться на сайте, необходимо создать систему авторизации. С помощью этого очень простого PHP -кода, вы можете включить систему авторизации. Скопируйте код и вставьте его перед разметкой в файл login.php :

В приведенном выше коде, перед перенаправлением пользователя на страницу intropage.php , которую мы добавим чуть позже, вы в первую очередь должны проверить, была ли установлена сессия .

В противном случае, если сессия не была установлена, пользователю с помощью переменной message будет выдаваться сообщение об ошибке или он будет перенаправляться на страницу login.php .

Шаг — 7 Конфигурация файла intropage.php

Мы установили все, что нужно для файлов register.php и login.php . Теперь вы просто должны обеспечить, чтобы пользователь оставался в системе при перенаправлении на страницу intropage.php . Скопируйте и вставьте приведенный ниже код в файл intropage.php :

Обратите внимание, что оператор if был создан для проверки, установлена ли сессия, и в зависимости от этого должен ли пользователь перенаправляться на страницу login.php или остаться на странице intropage.php .

Шаг — 8 Конфигурация файла logout.php

Наконец, чтобы пользователь мог выйти из системы, нужно удалить сессию с помощью session_destroy .

Скопируйте данный код в файл logout.php :

Заключение

Сегодня мы узнали, как создать простую систему авторизации, используя PHP и MySQL . Конечно, существует много аспектов, которые нужно учитывать, когда речь идет о безопасности, но это уже неплохое начало.

Илон Маск рекомендует:  Краткие описания основных функций и команд vb (для начинающих)

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

Надеюсь, вам понравилась эта статья. Увидимся в следующий раз!

Данная публикация представляет собой перевод статьи « How to Create a Login and Registration System Using PHP and MySQL » , подготовленной дружной командой проекта Интернет-технологии.ру

PHP авторизация на сайте — чтобы пользователи не мерзли у входа

Дата публикации: 2020-10-12

От автора: современные устройства не только помогают в жизнь, но еще и затрудняют ее. Мой сосед три часа простоял возле собственного подъезда. И все потому, что забыл дома ключи, а приехавшая в гости теща не узнала голос собственного зятя по домофону. Или не хотела «признать» . Сегодня мы разберемся, что такое PHP авторизация на сайте и как ее правильно организовать, чтобы ваши пользователи «не мерзли» у входа.

Стандартная авторизация

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

Кроме этого на многих сайтах пользователям предоставляют доступ к дополнительному функционалу, которым не могут воспользоваться обычные посетители (комментирование, размещение фотографий, специализированные инструменты). Для авторизации человек должен быть зарегистрирован в системе ресурса.

В современном интернете стандартной считается модуль авторизации на сайте, построенный на PHP и MySQL. Вся информация о пользователе, полученная во время регистрации, записывается в специальную таблицу БД MySQL. Набор сохраняемых значений на каждом сайте может варьироваться, но обязательными являются логин и пароль пользователя.

Человеку, зашедшему на любимый ресурс, нужно сообщить его системе о том, что он является зарегистрированным (постоянным) пользователем ресурса. Для этого в специальную форму посетитель вводит свой логин и пароль. Затем их значение с помощью скрипта авторизации на PHP и MySQL сравнивается с данными, сохраненными в СУБД. Если они совпадают, то пользователь получает доступ к расширенному функционалу ресурса.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

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

Мы это проходили

Да, этот процесс мы уже рассматривали в предыдущих материалах. Но мы ни разу не упоминали о такой важной составляющей, как сессии. С их помощью пользователь может после авторизации посещать все разделы ресурса, и не проходить данную процедуру на каждой странице. Рассмотрение темы о том, как сделать авторизацию на сайте PHP, было бы не полным без изучения возможностей сессий.

Начнем, как всегда, с формы. Вот ее разметка:

Простая авторизация и аутентификация на PHP в связке с MySQL

Все кто разрабатывает web сайты, рано или поздно сталкивается с такой задачей как авторизация и аутентификация пользователей, реализованная именно с помощью языка программирования, а не с помощью стандарта протокола http. Сегодня мы рассмотрим пример создания простой авторизации с использованием языка программирования PHP, а данные о пользователях будем хранить в базе MySQL.

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

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

Создание объектов в базе данных

Переходим к практике. Для начала создадим таблицу хранения данных о пользователях в базе MySQL. Я предлагаю использовать простую структуру таблицы (Вы ее, конечно, можете дополнить чем-нибудь, у меня база называется test, а таблица users):

И давайте сразу же добавим одну запись в эту таблицу:

Итого у нас получилось:

  • Логин – mylogin;
  • Пароль — 202cb962ac59075b964b07152d234b70;

Мы пароль, конечно же, будем хранить в хешированном виде, так как хранить пароль в открытом виде, мягко сказать, не безопасно. У нас Выше хеш пароля 123, поэтому, когда будем вводить пароль в форму, мы будем забивать именно 123, а не 202cb962ac59075b964b07152d234b70.

Создание формы регистрации

Для того чтобы пользователь мог сам зарегистрироваться, сделайте форму, данные с которой будут посылаться на файл обработки регистрации, т.е. записываться в базу данных. Например, вот самый простой способ:

Кстати, при таком способе лучше всего для логина использовать латинские буквы (т.е. английские), если хотите писать логин на русском, то придется немного корректировать код. Файл можете назвать как угодно (для теста я использовал reg.html).

Примечание! Для тестирования я использую всего один файл, я его назвал mylogin.html (код файла ниже). Вы можете использовать в своих файлах и называть их как угодно, я здесь описываю сам процесс авторизации, поэтому применить его можно везде. Кстати, во всех файлах придется использовать функцию session_start(); для того чтобы Вы могли проверять авторизован пользователь или нет. И еще один момент, конечно же, пропишите свои настройки подключения к базе данных.

Создание формы авторизации

Теперь перейдем непосредственно к самой авторизации. Создайте файл с названием mylogin.html со следующим содержанием:

Примечание! Если вдруг у Вас отказывает работать парсер php, т.е. на экран Вам выводится сам код php, то у Вас просто на всего не включена обработка php в файлах html. Настройки делаются в файле конфигурации web сервера httpd.conf (если apache):

В IIS в окне «Добавление сопоставления модуля» (Add Module Mapping) добавьте к *.php еще и *.html через запятую. Это если Вы делаете у себя дома на своем web сервере, а если Вы все это делаете у хостера, то Вам придется писать им и просить внести необходимые изменения, у некоторых хостеров они уже сделаны.

Код я прокомментировал, поэтому я думаю, что все должно быть понятно. Еще раз напоминаю во всех файлах, содержимое которых Вы не хотите показывать не авторизованным пользователям, необходимо писать session_start, ну и, наверное, на этом все. Если есть вопросы, задавайте в комментариях. Удачи!

Работа с сессиями PHP

Учебник PHP

Практика

Важное

Регулярки

Работа с htaccess

Файлы, папки

Сессии и куки

Работа с БД

Практика по работе с БД в PHP

Перед чтением см. новые уроки раздела «Важное», которые появились выше.

Практика

Движок PHP

Продвинутые БД

Аутентификация

Практика

ООП и MVC

Абстрактные классы и интерфейсы

Трейты

ООП Магия

Практика

Практика: классы как набор методов

  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс ArrayConvertor
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс TagHelper

  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс FormHelper
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс TableHelper
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс SessionShell
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс CookieShell
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс FileManipulator
  • Урок №
    новая вкладка с new.code.mu
    . текст, код Практика: класс databaseShell TODO cart корзина flash шаблонизатор роутер контроллер кеш логи фалидатор

Многие начинающие не понимают, что когда они видят страницу сайта в своем браузере, PHP скрипт уже давно отработал и забыл о нас.

Поэтому, если мы переходим с одной страницы сайта на другую — php скрипт не может запомнить данные с предыдущей страницы, например, значения переменных.

Однако, такой механизм очень нужен, хотя бы для того, чтобы запоминать выбор пользователя или то, что пользователь был авторизован.

На помощь программистам приходят такие механизмы как сессии и cookie (куки).

Что такое сессии в PHP?

Сессия — это механизм PHP, который позволяет хранить данные для конкретного пользователя между запусками скрипта.

Мы можем записывать какую-либо информацию в сессию и считывать ее оттуда в следующем запуске этого или другого скрипта сайта.

Илон Маск рекомендует:  Создаем jquery плагин на примере поискового поля

С помощью сессии можно реализовать авторизацию пользователей, корзину интернет-магазина и другое.

Инициализируем сессию

Чтобы записать что-то в сессию ее сначала нужно инициализировать с помощью функции session_start():

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

Пишем в сессии

После инициализации мы можем записать что-нибудь в сессию.

Сделать это не сложно:

Читаем из сессий

После того, как мы что-то записали в сессию, мы можем это оттуда извлечь:

Возможные проблемы

Данный материал есть также в виде видео: https://youtu.be/rIHGX-XTLpw

Основная проблема при работе с сессией следующая: нельзя делать никакого вывода в браузер до окончания работы с сессиями.

Простая авторизация на PHP.

В этой статье мы напишем очень простую авторизация на web странице. Мы не буде использовать базы данных и т.д. Все будет очень лаконично и просто.

Допустим у нас есть страница index.php на которую могут заходить только авторизованные пользователи. Для ограничения доступа мы будем проверять есть ли сессии для этого пользователя или если проще, авторизован пользователь. Создадим файл и запишем в него такой код :

session_start(); # Открыли сессию , обязательно условие при работе с сессиями.

header(«Location: login.php»); # производим редирект пользователя на страницу login.php

exit; # После функции header() обязательно завершаем выполнение скрипта при помощи функции exit(). Данный код очень просто, если у нас в массиве $_SESSION нету переменой admin равной значению ‘admin’ перенаправить на страницу авторизации.

Ну и за одно создадим страницу авторизации login.php :

Простой html код создания формы с двумя полями и кнопкой отправки, метод передачи данных post. Если мы все правильно сделали , то при попытки зайти на index.php нас должно выкидывать на форму авторизации.

Следующим этапом мы добавим обработчик данных из формы. Который будет принимать и сравнивать данные из формы. В этом примере у нас будет только один пользователь и хранить логин\пароль мы будем прям в этом же файле. Пароль будет в зашифрованном виде c помощью функции md5(). А что бы узнать узнать хеш пароля попробуйте выполнить код echo md5(‘mypass’); �� Делать это мы будем по условию — только в том случае, если нажата кнопка формы.

У кнопки есть имя («submit»), а данные мы передаем методом post. Соответственно, мы можем просто проверить, существует ли элемент submit в массиве $_POST. Если есть — кнопка была нажата, и мы будем выполнять действия по проверке присланных данных, иначе — ничего делать не будем.

В файл формы (login.php) в самое начало добавим код :

Когда создается сессия, PHP генерирует уникальный идентификатор, который представляет собой случайную строку.Все переменные сессии хранятся на сервере во временном файле.
Сервер отправляет на компьютер пользователя куки, называемые PHPSESSID, для хранения строки уникального идентификатора сессии.
Когда пользователь закрывает браузер, сессия PHP закрывается автоматически. Иначе сервер завершит сессию по истечении заданного периода времени.

Авторизация пользователя на php/mysql/session

Делаю авторизацию, возникла такая проблема. При нажатии на Logout , происходит редирект на login.php, т.е. на форму, но если в соседней вкладке зайти на home.php, то редирект не происходит и пользователь как бы остаётся в системе. Т.е. не происходит разрушение сессии.

login.php

3 ответа 3

Ну, я уже не помню всех тонкостей с сессиями, но в моем видении это так: при логине создаешь некий ключ в сессии, например:

Потом, когда к тебе на страницу заходят, первым делом вызываешь скрипт, который проверяет сессию:

Сразу, просьба исключить комментарии про голый mysql вместо PDO и иже с ним, ответ ориентируется на достижение других целей.

Я использую сессии и авторизацию через $_SERVER, но может вам пригодится следующее:

Попробуй использовать unset($_SESSION[‘login_user’]);

session_destroy() не желательно использовать

Используй проверки if(isset($_SESSION[‘login_user’])) .

Защищенная Авторизация и Регистрация на PHP + MySQL через PDO

В этой статье Вы найдете скрипт на языке программирования PHP, который позволяет пользователю зарегистрироваться и авторизоваться на сайте. Скрипт на 100% защищает от SQL-инжекций, поскольку использует PDO (система подготовленных запросов) и библиотеку RedBeanPHP, которая реализует ORM. Использовать RedBeanPHP мы будем только, чтобы присоединиться к базе данных и легко ей манипулировать, не используя стандартные команды в PHP, такие как mysql_connect и подобные, потому что они устаревшие и не очень эффективные.

Скрипт использует сессии ($_SESSION) и позволяет узнать авторизован сейчас человек или нет. Также в скрипте предусмотрена капча с рандомными вопросами, которая защищает сайт от надоедливого спама.

Скрипт состоит из следующих файлов:

  • index.php — содержит 2 ссылки (на форму авторизации и регистрации);
  • rb.php — ORM-библиотека RedBeanPHP;
  • db.php — подключение к базе данных;
  • login.php — обработчик авторизации пользователя и форма авторизации;
  • signup.php — обработчик регистрации пользователя и форма регистрации;
  • logout.php — выход из сессии.

Как подключить скрипт?

Скачайте готовый скрипт и перенесите все файлы на свой хостинг или локальный сервер (Denwer, OpenServer). Для работы скрипта Вам потребуется версия PHP не ниже 5.6. Далее необходимо создать базу данных и подсоединиться к ней. Для этого потребуется поменять значения в файле db.php. Если с этим возникнут трудности, то Вы можете задавать свои вопросы в комментариях под статьей.

Форма авторизации

В файле login.php находится обработчик и сама форма авторизации, которая состоит из двух полей (логин, пароль). Значок @ (собачка) перед переменными служит в PHP для отключения ошибки, если такая возникнет.

PHP обработчик формы авторизации пользователя

Все переменные, которые возвращаются по методу POST — мы присваиваем переменной $data.

Форма регистрации

В файле signup.php находится обработчик и сама форма регистрации. Для таких форм рекомендуется использовать метод запроса POST, при котором веб-сервер принимает данные, заключённые в тело сообщения, для хранения.

PHP обработчик формы регистрации пользователя

Смотреть видеоурок

Статья была написана на основе видеоурока Хауди Хо, который Вы можете посмотреть ниже. Скрипт из видео был немного доработан (добавлена капча function captcha_show).

Как сделать авторизацию на PHP? Пишем авторизацию пользователя

В этой статье вы узнаете, как сделать PHP-авторизацию (authentication) на сайте с помощью данных, полученных от пользователя при регистрации. Будем использовать таблицу MySQL, а сама PHP-авторизация будет работать с применением сессий и cookie. Материал не следует рассматривать, как пошаговое руководство. Зато он помогает понять, как работает PHP-авторизация в целом.

В первую очередь нужно сверстать главную страницу веб-сайта, поместив её в корне в папку template. Для этого создаём файл index.html с формой ввода логина и пароля, кнопкой «Вход», вот её код:

Мы используем метод передачи post, который необходим. Нам ведь не нужно, чтобы в процессе PHP-авторизации пароль и логин «светились» в адресной строке.

Когда форма готова, создаём главный контроллер — наиболее важный файл сайта, лежащий в корне — index.php. Как раз он и будет запускаться во время входа. Код выглядит следующим образом:

Теперь разберёмся подробнее, как всё работает.

В первых 3 строках просто подключаются файлы с функциями, необходимыми для дальнейшего использования в коде. О них поговорим потом. Далее проверяем, был ли передан get-параметр action=out . В случае его передачи пользователь нажал на ссылку выхода с веб-сайта. Код ссылки, который нужно добавить в файл, содержащий код формы для входа:

Потом у нас идёт условие, которое проверяет, авторизован ли ты (if (login())). То есть функция возвращает нам true, если юзер вошёл на сайт. В противном случае возвращается false. Когда вернулось true, в переменную $UID записывается id юзера. Что касается переменной $admin, то в неё пишется результат работы функции is_admin($UID) . Она определяет, является ли наш юзер админом, возвращая true, если это так и false в обратном случае. Потом эти 2 переменные понадобятся, чтобы вывести определённые элементы на странице.

Итак, форму PHP-авторизации можно вывести следующим условием:

Аналогичная ситуация и с переменной $admin. Последний код тоже можно поместить в файл с формой.

Если функция login() вернёт false (юзер не вошёл на сайт), мы проверим, а нажал ли он вообще на кнопку входа на сайт, которая включена в нашу форму PHP-авторизации:

Если это так, запускается функция enter() , авторизующая пользователя. Если ошибки отсутствуют, а пользователь вошёл успешно, создаём те же две переменные: $UID и $admin. В обратном случае переменные не создаются никакие, ведь пользователь является гостем.

Давайте посмотрим на алгоритм работы:

А теперь рассмотрим все функции, вызываемые в коде. Вот функция входа на сайт:

Илон Маск рекомендует:  Атрибут required в HTML

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

Но если работа функции enter() будет продолжена, мы проверим, а существует ли в базе данных запись с таким ником. Когда записи нет, возвращается массив с ошибкой. Когда есть, введённый пароль сравнивается со значением, которое хранится в БД.

Пароли сравниваются не в чистом виде, т. к. в базе данных они хэшированы функцией md5() . Значит это следующее: прежде чем приступить к сравнению, нужно хэшировать тем же алгоритмом пароль, введённый пользователем при попытке пройти аутентификацию/авторизацию.

Когда хэши совпадают, происходит авторизация с помощью скрипта. При отсутствии совпадений, возвращается ошибка.

Давайте подробно остановимся на том, что значит «авторизироваться». В нашем скрипте информация о PHP-авторизации хранится в cookie и сессии. В сессию записывается id пользователя:

Кроме того, создаются 2 cookie: login и password. Продолжительность жизни — 50 тыс. секунд. В первый пишется логин, во 2-й — хэш пароля.

В данной строке выполняется функция, которая устанавливает время последней активности юзера. Код:

С помощью функции перезаписываются поля online и last_act в базе данных. Здесь, кстати, важно убедиться, что эти поля существуют (оба имеют тип int).

Теперь посмотрим на алгоритм работы функции enter() :

Идём дальше. Следующая функция нужна для проверки, авторизирован ли юзер на сайте — login() .

Возникает вопрос, почему для авторизации используем и сессию, и cookie? Всё дело в том, что при закрытии браузера сессия «умирает», а пользователь автоматически разлогинивается. А вот cookie хранятся определённое время, задаваемое нами (50 тыс. секунд).

Дальше у нас функция online() . Её нужно запускать первой на всех модулях и страницах будущего сайта. В первую очередь, она проверяет, прошёл ли пользователь PHP-авторизацию/аутентификацию, что важно для дальнейшей работы скрипта. Во вторую очередь, она выполняет обновление времени последней активности, а также помогает в перспективе выводить систему онлайн-пользователей.

Наша функция вернёт true, когда юзер авторизирован, а в обратном случае — false. При этом в процессе работы обновится время жизни cookie или они будут созданы, если вообще не существуют.

Очередной алгоритм работы:

Когда есть сессия и cookie, обновляется время жизни cookie. Чтобы это реализовать, они удаляются, время смерти устанавливается на одну секунду раньше текущего времени, потом устанавливаете заново. Также нужно учесть, что функция lastAct() обновляет время последней активности. Возвращается, разумеется, true.

Когда сессия есть, а cookie почему то нет, то по id юзера мы получаем из базы данных логин и хэш пароля, потом пишем их в cookie. Возвращается true.

Когда сессии нет, проверяем, существуют ли cookie. Традиционный пример — PHP-авторизация после перезапуска браузера, когда сессия слетела, но cookie всё ещё живы. Становится сложнее, ведь нужно проверить, а совпадает ли пара пароль-логин с какой-нибудь строкой из базы данных. Ведь пользователь легко мог сменить cookie в настройках для сайта. Если пара нашлась, создаётся переменная сессии, возвращается true. Если пара не нашлась, возвращается false.

Если у нас самый печальный вариант — ни сессии, ни cookie не оказалось, возвращается false.

Сейчас глянем на функцию is_admin($UID) , определяющую является ли user админом. Если вам это не надо, опустите данную функцию и её вызовы в контроллере. Но учтите, что для вывода контента на страницу для админов она бывает полезна. К тому же, она проста и основана на одном столбце в базе данных в таблице users (столбец prava, тип int).

Когда наш юзер обыкновенный пользователь, значению в столбце присваивается 0, иначе — 1. Соответственно, в первом случае вернётся false, во втором — true.

Последняя функция — это out() . Она проста и удаляет все «следы» юзера — и сессию, и cookie.

Код всех наших функций нужно поместить в файл lib/module_global.php, подключаемый в начале работы контроллера.

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

Разборка и чистка ноутбука Lenovo IdeaPad Yoga 13

Решили почистить ультрабук леново йогу от пыли. В плане разборки ноутбук интересный, но без специальной отвёртки его разобрать очень сложно (если вдруг кто захочет маленькой плоской отвёрткой открутить винтики с шляпкой под звёздочку).

Разборка и чистка ноутбука HP dv6-3106er

Принесли мне ноутбук для чистки от пыли, так как он перегревался.

Разборка планшета irbis TX68 и замена тачскрина

Попался мне в руки планшет у которого был разбит экран и была необходимость его заменить.

Как снять клавиатуру с ноутбука ASUS K52J

Снимаем клавиатуру с ноутбука, чтобы её заменить. Если нет денег на замену клавиатуры, то её можно просто отключить и купить стандартную USB клавиатуру, обойдётся она раз в 5 дешевле.

Разборка и чистка ноутбука HP G6 2254sr

Недавно я уже разбирал ноутбук HP G6, но там была модель по старше, этот же ноутбук более новее и его разборка отличается от предыдущей моделей, особенно интересно здесь снимается клавиатура.

Разборка ноутбука Asus Eee pc1011cx и замена винчестера

Операционная система в этом ноутбуке перестала загружаться, вместо этого срабатывала встроенная в ОС windows 7 диагностика по восстановлению системы. В итоге оказалось, что на винчестере много битых секторов (бэд блоков), поэтому пришлось заменить винчестер.

Разборка и чистка ноутбука Acer aspire 3690

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

Разборка и чистка ноутбука Samsung R540

Цель разборки ноутбука была одна — почистить его от пыли, так как он грелся.

Разборка и чистка ноутбука SONY vaio VPCEH2J1R (PCG-71812V)

В этот раз ко мне в руки попал ноутбук SONY VAIO, если я не ошибаюсь, то первый опыт по разборке ноутбуков у меня был как раз связан с sony vaio (хотя может это был и второй ноутбук), правда другой модели. Ну ладно, ближе к делу.

Разборка видеокарты XFX GeForce GTX 260

Появилась необходимость почистить видеокарту от пыли, но как оказалось не совсем просто было её разобрать, по этому было решено написать статью о разборке видеокарты фирмы XFX модели GeForce 260 GTX.

Использование сессий в PHP

Очень часто при написании скриптов на php необходимо хранить некоторую информацию о посетителе в течение всего сеанса его работы. Типичным примером такой ситуации является необходимость «помнить» логин и пароль пользователя при его нахождении в закрытой части сайта (например, на форуме). Собственного говоря, именно для этого и существует механизм сессий, реализованный в php, однако давайте все по порядку.

Для того, чтобы в скрипте можно было работать с сессиями, необходимо сначала инициализировать механизм сессий. Делается это с помощью функции session_start(). При этом будет создана новая сессия или восстановлена уже существующая. Как сервер узнает что ему делать: создавать или восстанавливать? Очень просто. Дело в том, что когда посетитель заходит на сайт, ему присваивается 32-х разрядный идентификатор вида: abcd1efgh2ijkl3mnop4qrs5tuv6wxyz, который «следует» за ним при всех перемещениях по сайту. «Следование» обеспечивается либо по средствам cookies, либо, если они отключены у пользователя, добавлением ко всем адресам GET-запроса вида: PHPSESS >

После того, как механизм сессий был инициализирован в скрипте мы можем сохранять любую информацию в ассоциативном массиве $_SESSION. Этот массив является глобальной переменной сессии. Таким образом, сохранив в нем, к примеру, значения переменных login и password на странице авторизации мы можем использовать их на всех остальных страницах защищенной части сайта.

Завершение сессии происходит либо автоматически по истечению определенного промежутка времени, либо принудительно при использовании функции session_destroy().

Ну вот, с теорией мы разобрались, теперь настало время применить ее на практике. Для этого напишем 3 скрипта: login.php — авторизация посетителей, protected.php — закрытая страница и logout.php — завершение работы.

login.php

session_start ( ) ; //инициализирум механизм сесссий

if ( ! isset ( $_POST [ ‘ok’ ] ) ) <
// если форма не заполнена, то выводим ее
echo »

Страница авторизации

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL