Помощник
|
Делить или не делить таблицы БД, делема |
Banderas
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
12.3.2011, 13:21;
Ответить: ZiTosS
Сообщение
#2
|
|
Banderas,
Прошу прощения, проблема в банальной ошибке - не взял переменную в одинарные кавычки.. упс) Когда делаем сайт на локалке, советую включить отображение всех ошибок (error_reporting в php.ini). Если уж никак не можешь отследить ошибку в запросе, выведи напрямую ответ об ошибке: [php]mysql_query("Запрос...") or die(mysql_errno().": ".mysql_error());[/php] У тебя ошибка была в синтаксисе запроса. Всегда текстовые данные нужно помещать в кавычки (так же не забываем экранировать строковые данные...). Раз уж создал тему, то хочу задать вопрос. Поля для авторизация пользователя хранить в самой таблице пользователя, или создать новую таблицу? Поля для авторизации login и password я так понимаю... Это неотъемлемая часть таблицы пользователей. Не нужно вводить лишних усложнений, если они не рентабельны. Разбиение таблиц производят обычно когда есть соответствие записей в таблицах 1 <-> много, много <-> 1 или много <-> много. У тебя же у каждого пользователя свои данные для авторизации, зачем здесь разбиение? Если бы можно было обощить какие-либо данные, то тут можно и разбивать на таблицы. |
|
|
Banderas
|
Сообщение
#3
|
|
ZiTosS, спасибо, знал что нужно включить error_reporting(E_ALL), но не знал где.
Нет, я имел ввиду поля подтверждения регистрации. При регистрации пользователь получает случайный код c sha1 шифрованием на имейл. В то же время код заноситься в БД. И переходя по ссылке я получаю логин пользователя и код. Если для данного пользователя, полученный код равен коду с БД - изменяю поле check_auth на 1 - отмечаю что пользователь подтвердил регистрацию. Тоесть в моей БД пользователя добавилось ещё 2 таблицы, одна из которых больше не будет использоваться. Рационально ли это? Или после подтверждения регистрации просто удалить это поле (поле с sha1 кодом)? |
|
|
ZiTosS |
12.3.2011, 14:45;
Ответить: ZiTosS
Сообщение
#4
|
|
Banderas, рационально это все свести в одну таблицу, т.к. у тебя одному пользователю соответсвует один хеш для подтверждения и никак иначе.
Простой пример для понимания разбиения на таблицы. Есть у нас БД Школа, в ней 1 таблица Ученики" с полями: идентификатор (id) ФИО Класс Характеристика и т.д. Так вот, понятное дело, что в данной таблице собраны все ученики школы с разных классов. Естественно часть учеников относится к одному классу, часть учеников относится к другому классу и т.д. Когда мы в поле класса будем хранить, например - "10А". Это текстовое поле. У некоторых учеников оно может повторяться, но получается что ученики одного класса никак не связаны по данному полю. Например, у нас задача, название класса 10Д изменили на 10Ж. Мы при редактировании учеников бывшего 10Д класса случайно забыли отредактировать записи нескольких учеников. При том бы нам пришлось редактировать каждую запись ученика из бывшего класса 10Д. Теперь представим, что мы вынесли классы в отдельную таблицу "Классы". А из таблицы учеников ссылаемся на таблицу классов по полю id_class. Захотелось нам теперь изменить название класса 10Д на 10Ж, это делается редактированием только одной записи в таблице "Классы". Это называется - нормализация базы данных. Т.е. одна запись из первой таблицы может использоваться много раз во второй таблице. У нас, класс 10Ж из таблицы "Классы" будет много раз встречаться в записях таблицы "Ученики" |
|
|
gaaarfild |
13.3.2011, 20:18;
Ответить: gaaarfild
Сообщение
#5
|
|
И, в любом случае, у тебя одному пользователю соответствует один ХЭШ. Если ты его больше не используешь, то можешь просто очистить поле. Или добавить еще одно, например `used`. И если оно равно 1 - то более этот хэш не прокатит. Но использовать все лучше в одной строке для одного пользователя.
|
|
|
Banderas
|
Сообщение
#6
|
|
Спасибо за ответы. Ещё небольшой вопрос. Стоит ли использовать $auth_code как хеш для запоминания пользователя. Тоесть хеш записывается в БД и в Куки. Если куки этого пользователя равны таблице из БД, то пользователя авторизован и ему не надо вводить логин и пароль.
Или лучше как то по другому офомить запоминания пользователя? |
|
|
ZiTosS |
18.3.2011, 19:04;
Ответить: ZiTosS
Сообщение
#7
|
|
|
Banderas, нет. Хеш для авторизации пользователя не подойдет. Украли куки у администратора - и имеем полный доступ к ресурсу... Разве это хорошо? Попозже опишу методику запоминания пользователя.
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Создать видеоканал лучше в ютуб или телеграм? | 10 | uahomka | 1813 | 24.3.2024, 4:21 автор: Alexand3r |
|
Если статья не в индексе Google - она уникальна или нет? | 2 | uahomka | 802 | 20.3.2024, 11:17 автор: Vmir |
|
Где больше пробив на кликандер или попандер или попап трафике? | 1 | Boymaster | 616 | 20.3.2024, 9:50 автор: Skyworker |
|
Выполню качественную верстку макетов или разработка собственного, быстро и не дорого от 45$ |
123 | webche | 116761 | 17.3.2024, 7:09 автор: webche |
|
От какого экрана будут меньше уставать глаза OLED или IPS? | 3 | metvekot | 984 | 12.3.2024, 16:25 автор: MisterBit |
Текстовая версия | Сейчас: 29.3.2024, 19:46 |