MySQL имеет встроенную возможность управления пользователями: CREATE USER, GRANT и прочие функции. Таким образом в каждом скрипте нужно будет просто коннектиться к базе под этим пользователем.
Альтернативно можно создать таблицу из пользователей и на каждом скрипте выполнять выборку "SELECT * FROM user WHERE user='$_SESSION[name]' AND pass='$_SESSION[pass]'".
Первый способ мне кажется логичнее, но также находятся сайты, которые используют второй способ.
В чём преимущества и недостатки? Или есть какой-то более рациональный способ? Если я надеюсь, что на сервере количество пользователей будет измеряться тысячами.
Другие языки программирования и технологии
PHP+MySQL. Оптимальный вариант управление пользователями.
Первый способ годится только для управления пользователями СЕРВЕРА БАЗ ДАННЫХ. Для управления пользователями сайтов (и вообще приложений) его НИКТО не применяет. У приложения может быть сколько угодно пользователей, но само приложение при этом, как правило, имеет только одну учетную запись в таблице mysql.user. Логика очень простая -- у приложения может быть функционал, который не зависит прямо от базы данных. Соответственно, набор прав у приложения может быть иным, нежели набор прав у базы данных. Соответственно, информацию об этих правах надо хранить отдельно от прав доступа к базе данных.
Возьмите для примера WordPress -- там права на создание поста существуют отдельно от прав на его публикацию. А кроме них, есть еще права на редактирование чужих постов.. . То есть WordPress фактически устанавливает "права собственности" на отдельные записи в таблице wp_posts.
Не говоря уже о том, что на бюджетном хостинге прав на управление пользователями сервера баз данных Вам никто не даст.. .
Ваш второй способ -- это гарантия того, что Вас взломают. Хранить пароль открытым текстом -- это плохая привычка. Хранить надо по крайней мере хэш, а еще лучше -- хэш с "солью"...
Возьмите для примера WordPress -- там права на создание поста существуют отдельно от прав на его публикацию. А кроме них, есть еще права на редактирование чужих постов.. . То есть WordPress фактически устанавливает "права собственности" на отдельные записи в таблице wp_posts.
Не говоря уже о том, что на бюджетном хостинге прав на управление пользователями сервера баз данных Вам никто не даст.. .
Ваш второй способ -- это гарантия того, что Вас взломают. Хранить пароль открытым текстом -- это плохая привычка. Хранить надо по крайней мере хэш, а еще лучше -- хэш с "солью"...
Антон Алисевич
Насчёт хэширования - это понятно, просто хотел пример упростить. А вот насчёт соли не знал ничего. Почитал. Спасибо!
Только второй. Первый - это не способ, это чушь, и я не знаю сайтов, которые его используют. Потому что безопасность такого сайта будет нулевой, и даже лень объяснять, почему. На пальцах: если ключи от кабинетов хранятся в сейфе, то это еще не повод выдавать всем сотрудникам ключи от сейфа.
у второго способа есть существенный недостаток например:
сразу заметь User - это системная таблица MySQL, а у них другое предназначение.
Создатели MySQL решат сделать в таблице User новое поле и тогда у тебя перестанет работать скрипт обслуживающий регистрацию пользователей. Получиш критичискую ошибку и сответственно сбой работы всего сайта.
GRANT в этом плане безопаснее и он сразу обновляет "Грантовые" системные таблицы MySQL.
И ещё GRANT позволяет делать проверку Connet User по выданному реквизиту доступа с запретом чтения всех таблиц - вот тебе 100% защита сайта от не санкционированного доступа.
сразу заметь User - это системная таблица MySQL, а у них другое предназначение.
Создатели MySQL решат сделать в таблице User новое поле и тогда у тебя перестанет работать скрипт обслуживающий регистрацию пользователей. Получиш критичискую ошибку и сответственно сбой работы всего сайта.
GRANT в этом плане безопаснее и он сразу обновляет "Грантовые" системные таблицы MySQL.
И ещё GRANT позволяет делать проверку Connet User по выданному реквизиту доступа с запретом чтения всех таблиц - вот тебе 100% защита сайта от не санкционированного доступа.
Максим Громов
> User - это системная таблица MySQL
Ну уж... Системная таблица MySQL -- это mysql.user. Никто не запрещает мне иметь таблицу myApplication.user, совершенно не зависящую от системы...
Ну уж... Системная таблица MySQL -- это mysql.user. Никто не запрещает мне иметь таблицу myApplication.user, совершенно не зависящую от системы...
Если пользователи это те которые будут регистрироваться на сайте то использовать второй способ. а про первый способ - я ничего не понял. что это такое ваще)
Антон Алисевич
Это управление пользователями и доступом к базе данных. Подключение которых к базе происходит с помощью PHP функции mysql_connect($host,$user,$pass);
Похожие вопросы
- PHP, MySql, HTML... Веб девелоперы HELP плиз! Застряла посередине с курсовой.. . :-(
- Один вопрос оп PHP&MySQL
- Возникает ошибка в php mySQL. Подскажите, плиз.
- Посоветуйте с чего начать изучать PHP & MySQL
- нужна помощь в написани php кода для создания авторизации пользователя и регистрации
- пишу на delphi,vb.net,php,mysql,html,css но незная матиматики можно пробица в кодеры?
- PHP (MySQL) vs. ASP.NET (MS SQL) - что выбрать и какое у них будущее?
- PHP+MySQL подскажите метод как задавать фотографии в БД если у одной строки (с одним ID) может быть несколько фотографий
- Подскажите пожалуйста какой-нибудь неплохой бесплатный хостинг с Php+Mysql
- подскажите дешевый хостинг php, mysql, домен в зоне ru