проверка пользователя на php mysql

php регистрация пользователей, проверка уникальности значений

Делаю регистрацию пользователя для своего сайта, php учу не так давно.

Это функция у меня в отельном файле я ей передаю только значения.

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

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

проверка пользователя на php mysql. Смотреть фото проверка пользователя на php mysql. Смотреть картинку проверка пользователя на php mysql. Картинка про проверка пользователя на php mysql. Фото проверка пользователя на php mysql

проверка пользователя на php mysql. Смотреть фото проверка пользователя на php mysql. Смотреть картинку проверка пользователя на php mysql. Картинка про проверка пользователя на php mysql. Фото проверка пользователя на php mysql

2 ответа 2

Чтобы проверить существование пользователя, надо выполнить обычный SELECT запрос. Поэтому сначала научимся как выполнять SELECT запрос правильно.

Чтобы выполнить SELECT запрос с использованием переменных, надо сделать следующее:

В итоге получится такой код:

при таком способе у нас никогда не будет ошибок синтаксиса, не говоря уже об sql инъекциях.

То же самое касается и регистрации пользователя, или выполнения запроса INSERT:

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

Кроме того, соединяться с БД надо только один раз, и в дальнейшем везде использовать одну и ту же переменную с созданным соединением. Сначала смотрим как правильно подключаться к mysqli

В итоге твой код может выглядеть так:

И дальше же используем эти функции.

Источник

Безопасный метод авторизации на 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 и Cookie. Ну о том что она абсолютна безопасна я не говорю, ибо взломать можно все, но для маленького сайта она вполне подходит. Так же я предвижу комментарии о том что сессии безопаснее. Не спорю куки уступают сессиям в безопасности но для реализации простенькой авторизации вполне подходят. Подробности ниже.

И так, в базе у нас будет 1 база из 4 полей: users_id, users_login, users_password и users_hash. SQL запрос:

Давайте разберем каждый файл.

conf.php

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

# массив ошибок
$error [ 0 ] = ‘Я вас не знаю’ ;
$error [ 1 ] = ‘Включи куки’ ;
$error [ 2 ] = ‘Тебе сюда нельзя’ ;
?>

register.php

Файл регистрации, тут содержится простейшая форма и ее обработчик. Исходный код прокомментирован, но общий процесс я коротко опишу. Вначале проверяем наш логин, он может содержать только английские буквы и цифры. Далее мы проверяем длину логина, от 3 до 30 символов. Проверяем свободен ли логин. При успешных проверках добавляем нового пользователя в базу. Из введенного пароля мы вырезаем пробелы на случай если пользователь хранит свои пароли в каком ни будь текстовом файле (в windows текстовые редакторы любят «хватать» пробелы в начале или конце выделяемого текста). Шифруем пароль в двойном MD5 и добавляем в базу данные о новом пользователе. Перебрасываем пользователя на login.php.

# Подключаем конфиг
include ‘conf.php’ ;

login.php

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

# Подключаем конфиг
include ‘conf.php’ ;

# Переадресовываем браузер на страницу проверки нашего скрипта
header ( «Location: check.php» ) ; exit ( ) ;
>
else
<
print «Вы ввели неправильный логин/пароль
» ;
>
>
?>

check.php

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

# подключаем конфиг
include ‘conf.php’ ;

Источник

Как проверить существует ли такой пользователь в базе данных, чтобы можно было валидировать регистрацию пользователей на сайте?

Доброго времени суток!
У меня есть сайт, где есть регистрация пользователей. Как проверить существует ли такой пользователь в базе данных, и если есть, то вывести ошибку «такой пользователь уже зарегистрирован».
Иначе люди могут регать аккаунты под одним и тем же логином. Помогите, пожалуйста.

проверка пользователя на php mysql. Смотреть фото проверка пользователя на php mysql. Смотреть картинку проверка пользователя на php mysql. Картинка про проверка пользователя на php mysql. Фото проверка пользователя на php mysql

проверка пользователя на php mysql. Смотреть фото проверка пользователя на php mysql. Смотреть картинку проверка пользователя на php mysql. Картинка про проверка пользователя на php mysql. Фото проверка пользователя на php mysql

проверка пользователя на php mysql. Смотреть фото проверка пользователя на php mysql. Смотреть картинку проверка пользователя на php mysql. Картинка про проверка пользователя на php mysql. Фото проверка пользователя на php mysql

Дайте свою соц сеть, потому что мне надо задать еще один вопрос.

Ну и наглец. Иди mysql учи, а не людей доставай.

проверка пользователя на php mysql. Смотреть фото проверка пользователя на php mysql. Смотреть картинку проверка пользователя на php mysql. Картинка про проверка пользователя на php mysql. Фото проверка пользователя на php mysql

проверка пользователя на php mysql. Смотреть фото проверка пользователя на php mysql. Смотреть картинку проверка пользователя на php mysql. Картинка про проверка пользователя на php mysql. Фото проверка пользователя на php mysql

проверка пользователя на php mysql. Смотреть фото проверка пользователя на php mysql. Смотреть картинку проверка пользователя на php mysql. Картинка про проверка пользователя на php mysql. Фото проверка пользователя на php mysql

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

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

Источник

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

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

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

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

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

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

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

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

Мы пароль, конечно же, будем хранить в хешированном виде, так как хранить пароль в открытом виде, мягко сказать, не безопасно. У нас Выше хеш пароля 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, ну и, наверное, на этом все. Если есть вопросы, задавайте в комментариях. Удачи!

Источник

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

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