Скрипт личного кабинета для сайта на php

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Как с помощью 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

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

Источник

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

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

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

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

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

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

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

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

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Скрипт личного кабинета для сайта на php

Так получается что мой сайт mzcoding.com 3й раз меняет домен и движок и всегда при запуске нового сайта я обновлял статью по написанию Личного кабинета на PHP! В далеком 2010 это был простой ЛК на PHP 5.0, в 2014 это был ЛК 2.0 где мы обновили версию языка и код и добавили несколько плюшек. И вот настал 3й раз в этой и следующей статье мы напишем полноценный кабинет пользователя с регистрацией, авторизацией и базовым ЛК с модерацией! Разработку мы будем вести с применением PHP7 и Bootstrap 4, а так-же с применением некоторых компонентов symfony.

Первым делом создадим каталог с наименованием lk, далее откроем терминал по адресу данной папки и введем:

У вас должен быть глобально установлен composer, что это такое и как это сделать можно прочесть тут.

Далее composer просит ввести наименование пакета! Я назову его mzcoding/lk. Далее будут еще несколько пунктов описание, автор (можете указать их на свое усмотрение). Опция Minimum Stability Укажите dev. Далее оставляйте значения по умолчанию!

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

В конце у вас спросят, хотите ли вы установить какие либо зависимости? Вводим no. В итоге будет создан файл composer.json со следующим содержимым:

Теперь установим необходимые нам в работе библиотеки, первым делом установим http компоненты от symfony. Введем в терминале:

После установки данного пакета, установим еще один, это будет контейнер зависимостей DI. В качестве контейнера будем использовать библиотеку от разработчиков symfony, pimple

Для установки выполним:

Давайте взглянем на наш файл composer.json. Если все верно в секции require увидим что-то подобное:

Версии библиотек могут отличаться!

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

Так-же давайте сразу создадим все необходимые каталоги.

Все наши приготовления готовы! Теперь создадим точку входа нашего проекта, в корне проекта создадим файл index.php со следующим содержимым:

Давайте разберемся, что мы делаем в данном файле.

Первым делом мы инициализируем сессию, думаю тут все понятно. Далее мы подключаем наши зависимости:

Подтягиваем конфигурацию из файла конфига и устанавливаем глобальную константу на текущий каталог.

Далее мы открываем конструкцию try-catch тем самым отлаживая возникшие выше в коде исключительные ситуации. Обратите внимание в данном примере мы создали свой тип исключений LkException.

В блоке try мы инициализируем (получаем) все запросы (requests), а так-же инициализируем контейнер зависимостей (DI).

Далее мы добавляем в данный контейнер, конфигурацию проекта:

Экземпляр класса Session (данный класс опишем немного позже)

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

Далее мы передаем в наш контейнер подключение к БД (с помощью PDO). В нашем случае мы присваиваем переменной контейнера, анонимную функцию, которая подключается к базе и возвращает объект PDO.

В качестве примера мы используем БД PostgreSql.

И в завершении мы передаем текущий процесс в другой метод, а именно вызываем метод:

Тут мы вызываем метод init класса Router предварительно передав наш инициализированный контейнер в конструктор класса.

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

Создадим файл Router.php в каталоге app:

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

http://localhost:8000/index.php?c=contact&a=create

Система увидев такой код, вызовет метод create() у класса ContactController.php.

Теперь давайте опилим вспомогательный класс сессий, который мы использовали выше! Этот класс просто представляет собой обертку над глобальным массивом сессий. Создадим каталог Classes и добавим туда новый файл Session.php.

Шаг 4: Контроллеры и модели

Теперь добавим дамп таблицы для пользователей которые будут регистрироваться/авторизовываться!

Теперь давайте опишем систему аутентификации! Начнем с модели Создадим в каталоге Models базовую модель Model.php:

Думаю здесь все понятно из комментариев, мы просто описываем базовые методы для всех моделей!

Давайте начнем с пользователей и создадим модель Users:

Когда у нас описана модель мы можем приступить к логики приложения и сделать систему регистрации/авторизации пользователей!

Первым делом как и с моделями мы создадим базовый контроллер, для этого добавим каталог Controllers и добавим в него файл BaseController.php:

Конструктор данного контроллера принимает все пришедшие зависимости (например данные формы и любые другие данные сервера или пользовательского ввода)

Метод getConfig() возвращает наш файл конфигурации, а метод view() отвечает за вывод файлов представления и передачу параметров в них.

Далее давайте добавим файлы контроллеров отвечающих за регистрацию и авторизацию пользователей!

Добавим еще один контроллер RegisterController.php:

Теперь посмотрим как будет выглядеть представление, по факту это просто форма регистрации register.phtml:

И следом добавим контроллер авторизации LoginController.php

Форма входа будет выглядеть следующим образом login.phtml:

Далее сразу-же создадим и опишем контроллер отвечающий за вывод ЛК AccountController.php.

И так-же посмотрим на въюху account.php:

Если вы будете внимательны, то увидите, что мы используем глобальные функции (так называемые хелперы) по типу _hpswd или dbhelper, давайте опишем файл helpers.php

Модели стран, регионов и городов, а так-же логику администратора вы можете описать сами или найти в репозитории проекта.

Все вопросы пишите в комментариях

Источник

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

Примечание: мини-статья написана для новичков

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

1. Модель (клиент)
Регистрация
— логин (a-z0-9)
— пароль
Вход
— логин
— пароль
Cookie
— уникальный идентификатор юзера
— хэш

Модель (сервер)
MySQL
Таблица users
user_id (int(11))
user_login (Varchar(30))
user_password (varchar(32))
user_hash (varchar(32))
user_ip (int(10)) по умолчанию 0

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

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

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

2. Если злоумышленик вытащит трояном у пользователя уникальный хеш, воспользовать им он также не сможет(разве если только, пользователь решил принебречь своей безопастностью и выключил привязку к IP при авторизации).

2. Практика

— Структура таблицы `users`

CREATE TABLE `users` (

`user_id` int(11) unsigned NOT NULL auto_increment,

`user_login` varchar(30) NOT NULL,

`user_password` varchar(32) NOT NULL,

`user_hash` varchar(32) NOT NULL,

`user_ip` int(10) unsigned NOT NULL default ‘0’,

PRIMARY KEY (`user_id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;

register.php

// Страница регситрации нового пользователя

$err [] = «Логин может состоять только из букв английского алфавита и цифр» ;

$err [] = «Логин должен быть не меньше 3-х символов и не больше 30» ;

# проверяем, не сущестует ли пользователя с таким именем

$err [] = «Пользователь с таким логином уже существует в базе данных» ;

# Если нет ошибок, то добавляем в БД нового пользователя

# Убераем лишние пробелы и делаем двойное шифрование

header ( «Location: login.php» ); exit();

print «При регистрации произошли следующие ошибки:
» ;

login.php

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

# Функция для генерации случайной строки

$chars = «abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789» ;

# Вытаскиваем из БД запись, у которой логин равняеться введенному

# Генерируем случайное число и шифруем его

$hash = md5 ( generateCode ( 10 ));

# Если пользователя выбрал привязку к IP

# Переводим IP в строку

# Записываем в БД новый хеш авторизации и IP

# Переадресовываем браузер на страницу проверки нашего скрипта

header ( «Location: check.php» ); exit();

print «Вы ввели неправильный логин/пароль» ;

check.php

// Скрипт проверки

print «Хм, что-то не получилось» ;

print «Включите куки» ;

Для защиты формы логина от перебора, можно использовать captcha.ru target=»_blank»>капчу.

Хочу отметить, что здесь я рассматривал авторизацию основоную на cookies, не стоит в комментариях кричать, что сессии лучше/удобнее и т.д. Спасибо.

Источник

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

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