Личный кабинет для сайта php

Безопасный метод авторизации на PHP

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

Модель авторизации:

Клиент
Сервер MySQL

При регистрации в базу данных записывается логин пользователя и пароль(в двойном md5 шифровании)

При авторизация, сравниваеться логин и пароль, если они верны, то генерируеться случайная строка, которая хешируеться и добавляеться в БД в строку user_hash. Также записываеться IP адрес пользователя(но это у нас будет опциональным, так как кто-то сидит через Proxy, а у кого-то IP динамический. тут уже пользователь сам будет выбирать безопасность или удобство). В куки пользователя мы записываем его уникальный индетификатор и сгенерированный hash.

Почему надо хранить в куках хеш случайно сгенерированной строки, а не хеш пароля?
1. Из-за невнимательности программиста, во всей системе могут быть дырки, воспользовавшийсь этими дырками, злоумышленик может вытащить хеш пароля из БД и подставить его в свои куки, тем самым получить доступ к закрытым данным. В нашем же случае, двойной хеш пароля не чем не сможет помочь хакеру, так как расшифровать он его не сможет(теоретически это возможно, но на это он потратит не один месяц, а может быть и год) а воспользоваться этим хешем ему негде, ведь у нас при авторизации свой уникальный хеш прикрепленный к IP пользователя.
2. Если злоумышленик вытащит трояном у пользователя уникальный хеш, воспользовать им он также не сможет(разве если только, пользователь решил принебречь своей безопастностью и выключил привязку к IP при авторизации).

Реализация

Структура таблицы `users` в базе данных ‘testtable’

register.php

login.php

check.php

logout.php

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

Автор: http://jiexaspb.habrahabr.ru/. Адаптация под PHP 5.5 и MySQL 5.7 KDG.

Куки с флагом HttpOnly не видны браузерному javascript-коду, а отправляются только на сервер. На практике у вас никогда нет необходимости получать их содержимое в javascript. А вот злоумышленнику, нашедшему XSS — а XSS так или иначе когда-нибудь где-нибудь найдется — отсутствие HttpOnly на авторизационных куках доставит много радости.

Источник

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

Доброго времени суток друзья! Давай с Вами рассмотрим регистрацию пользователей на PHP. Для начала давайте определим условия для нашей регистрации пользователей:

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

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

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

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Рассмотрим структуру каталогов скриптов для реализации нашей регистрации с авторизацией. Нам нужно разбить скрипты на логические составляющие. Модули регистрации и авторизации мы поместив в отдельный каталог. Так же в отдельные каталоги мы поместим подключение к базе данных MySQL, файл с пользовательскими функциями, файл стилей CSS и наш шаблон HTML. Данная структура позволяет быстро ориентироваться в скриптах. Представьте себе, что у Вас большой сайт с кучей модулями и т.д. и если не будет порядка, то будет очень сложно что-то отыскать в таком бардаке.

Так как мы будем хранить все данные в СУБД MySQL, то давайте создадим не большую таблицу в которой будем хранить данные о регистрации.

Для начала нужно создать таблицу в базе данных. Таблицу назовем bez_reg где bez – это префикс таблицы, а reg название таблицы.

Источник

Как создать админку для сайта на PHP с нуля

Узнайте, для чего нужна панель управления сайтом, какие в ней есть функции и как её разработать самостоятельно.

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

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

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Пишет о программировании, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Как создать админку для сайта на PHP

В первую очередь создадим файл admin.php в корне сайта. Пока у него будет такой вид:

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

Дополнительные возможности управления сайтом относятся к разным направлениям PHP, которые невозможно охватить в одной статье. Подробнее обо всём на свете в мире PHP мы рассказываем на курсе «PHP-разработчик с нуля до PRO».

Теперь приступаем к написанию функций, запросов и валидаций.

Авторизация

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Чтобы ограничить доступ, создадим форму входа в панель управления:

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

Главная страница

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Теперь создадим условия, чтобы пользователь делал что-то полезное. Для этого методом GET передаётся название страницы:

На главной странице админки размещают все компоненты сайта с возможностью управления:

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

Редактирование

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Как вы могли заметить, в таблицах каждая строчка — это ссылка такого вида:

В переменной act передаётся значение edit_article, а в id — идентификатор статьи. Перейдя по ссылке, администратор попадает на страницу редактирования:

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

Добавление записей в базу данных

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Чтобы создать функцию добавления пользователя (или любого другого элемента на сайте), парсим форму и её обработчик:

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

Статистика

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

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

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

В качестве источника картинки указывается PHP-файл с кодом:

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

Дополнительные возможности

То, о чём мы успели поговорить, — лишь часть того, что должно быть в админке.

Например, дополнительно можно реализовать:

Не менее важно научиться тщательно проверять приходящие данные и сделать аутентификацию снова великой безопасной. Если хотите освоить все направления PHP, запишитесь на курс от Skillbox. Вы получите необходимые знания и закрепите их на практике — научитесь самостоятельно разрабатывать даже самые сложные приложения, не списывая что-то в интернете.

Источник

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

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

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

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

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

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

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

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

Шаг 1 – MySQL

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

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

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

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

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

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

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

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

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Шаг 3 — CSS

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

>
>
else <
$message = “That username already exists! Please try another one!”;
>
>
else <
$message = “All fields are required!”;
>
>
?>

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

md5 шифрование так и не нашел в коде 🙁

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Объясните новичку, как работает система донатов на сайте, как её создать и подключить к базе данных, и как менять цену на игровую валюту, буду очень благодарен!

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

где есть подключение к бд или работа с бд надо добавить букву i
например
mysql_query устаревшая
новая mysqli_query
читаем тут https://www.php.net/manual/ru/
валидатор https://phpcodechecker.com

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Объясните пожалуйста шаг 4. Зачем заменять на header.php? А в footer.php только копирайт.

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

пожауйста скиньте исходник. не могу разобраться с кодом!

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

И только после этого всё заработало, как автор писал в статье:

Источник

Создание профиля или личного кабинета пользователя на MVC, PHP и SQL

Сначала нужно модернизировать нашу таблицу с пользователями до такого вида:

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Добавились два новых поля – ava и role. Поле ava будет хранить название загруженной аватарки пользователя с расширением. Поле role будет содержать статус пользователя: 0 – пользователь, 1 – администратор, 2 – младший модератор, 3 – старший модератор. Если пользователь не авторизирован, то он имеет статус гость.

Добавим маршруты в файл routes.php, он находится в папке config:

Теперь создадим обработчик для страницы профиля, создавать его нужно в файле UserController.php, он находится в папке controllers. Сначала с помощью функции checkAdminId проверяем, авторизирован ли пользователь, если да, то в переменную id_user вернется его id. Далее с помощью функции getUserById, по id записанному в переменной id_user, получаем данные пользователя из таблицы БД и записываем их в п переменную user. Эти данные будут отображаться в полях формы.

Если на странице с формой нажали кнопку «Изменить», то методом POST получаем значение заполненных полей и проверяем, корректно ли введен логин пользователя и не занят ли он. Если да, то проверяем, выбрал ли пользователь аватар, если нет, то ему будет выставлен аватар по умолчанию. Затем будет выполнена функция editUserProfile, она изменит данные в таблице базы данных.

Если же аватар выбран в форме, то мы используем функцию editUserProfileImg. Функция выполнит загрузку нового аватара на сервер и изменит данные в таблице базы данных.

Теперь опишем используемые функции, они будут находиться в папке models в файле News.php:

Функция editUserProfile. Она соединяется с базой данных и производит обновление поля с логином пользователя.

Функция editUserProfileImg. С помощью функции downloadAvatar загружает картинку на сервер и получает в переменную ava_url имя с расширением. Далее выполняет SQL запрос, который обновляет поле с аватаркой и логином пользователя:

Функция downloadAvatar. Эта функция полностью идентична функции загрузки изображений на сервер, разница лишь в пути сохранения изображения:

Функция checkAdminId проверяет, авторизирован ли пользователь, путем проверки существования переменной сессии user. Если переменная существует, то возвращаем значение этой переменной, иначе делаем редирект на страницу авторизации:

Функция getIserById получает данные пользователя из базы данных, по полученному id:

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

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

В браузере эта форма будет выглядеть следующим образом:

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

Так как наши пароли зашифрованы, да и просто для удобства, создаем форму смены пароля. Создаем ее обработчик в NewsController.php:

В обработчике мы получили введенные в форму пароли, сравнили, равны ли введенные пароли и проверили, чтобы пароль был не короче шести символов. Далее если ошибок нет, то мы используем функцию generateHash, которая шифрует пароль (эта функция была разобрана в статье по созданию регистрации). Затем с помощью функции editPassword (была рассмотрена в этой статье ) меняем пароль в таблице базы данных на новый. Форма страницы редактирования пароля будет реализована так:

В браузере она будет отображаться следующим образом:

Личный кабинет для сайта php. Смотреть фото Личный кабинет для сайта php. Смотреть картинку Личный кабинет для сайта php. Картинка про Личный кабинет для сайта php. Фото Личный кабинет для сайта php

В итоге мы получаем профиль пользователя с возможностью смены логина и аватара. Чтобы не создавать функцию downloadAvatar, можно хранить аватарки вместе с загруженными картинками, а это не очень удобно. Лучше сделать проверку какого-то параметра в функции downloadImg и относительно него выбирать путь, по которому будем сохранять аватарку.

Смотрите также дополнительные статьи про MVC

Источник

Leave a Reply

Your email address will not be published. Required fields are marked *