2010-06-28 1 views
0

У меня уже есть простая система регистрации с использованием php и mysql. Он работает достаточно хорошо. Однако, когда люди посещают мой сайт и регистрируются, я хотел бы, чтобы они зарегистрировались как часть определенной группы. Итак, я думал, что регистрация произойдет следующим образом:Как создать два уровня аутентификации для регистрации на моем сайте?

Посетитель приземляется на index.php, нажимает на ссылку «Регистрация группы».
Имя группы посетителя и групповой пароль. [Для этой группы создается новая таблица, в которой все данные пользователя будут сохранены для этой конкретной группы]
Затем пользователю предлагается указать типичные регистрационные данные - имя, адрес электронной почты и т. Д. - и данные хранятся во вновь созданной групповой стол.

Все последующие посетители, связанные с этой группой будет нажать на «User Рег»
Посетитель будет предложено ввести имя группы и пароль
Если правильно, то он будет запрошен типичных данных РЭГ, которые будут храниться в его группы.

Я не знаю, как это сделать, это реализовать групповую аутентификацию до разрешения регистрации пользователя. Может ли кто-нибудь помочь мне с этим?

+0

Я еще никогда не слышал посетителей и новый стол в том же предложении ... – Diadistis

ответ

1

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

Что касается вашей идеи добавить новую таблицу для каждой группы, это плохая идея. Представьте, что у вас есть 100 групп. Тогда у вас будет 100 таблиц только для групп. Если вы получите до 1000 групп, то у вас будет 1000 таблиц. Попытайтесь управлять этим. Это будет очень расстраивать очень быстро. Вместо этого вам нужно сначала создать таблицу «Группа» со всеми связанными данными (имя группы, пароль и т. Д.). Затем добавьте в таблицу пользователя поле, в котором будет содержаться связанный идентификатор из таблицы Group. Таким образом, всякий раз, когда вы смотрите на пользователя, вы можете легко проверить, в какой группе находится пользователь, просто присоединившись к двум таблицам, вместо того, чтобы пытаться выяснить, на какую таблицу смотреть, как в вашем первоначальном плане.

+0

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

+0

Это нормально. Вы по-прежнему не хотите создавать таблицу для каждой группы. Если вы хотите, чтобы каждый пользователь мог зарегистрироваться только для одной группы, тогда нет проблем с тем, что я предложил. Если каждый пользователь может быть частью более чем одной группы, то есть дополнительные вещи, которые вы можете сделать. Нет проблем, которые я вижу с группами, которые существуют только пару месяцев. Возможно, вы можете объяснить, как это проблема? – Joseph

+0

Также, если вам нужно устранить некоторую запись, созданную для группы через некоторое время, тогда вы можете сделать это с помощью ** cronjob ** – Eugene

1

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

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

USER 
- id 
- username 
- password 
- etc... 

GROUP 
- id 
- name 
- password (?) 
- etc... 

USER_GROUP_CR 
- fk_user 
- fk_group 

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

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

+0

И просто чтобы добавить к выдающемуся решению Скотта, если ваши пользователи смогут быть в одной группе (когда-либо), вы могли бы поставить поле «GroupId» в таблицу «Пользователь» и привязать туда таблицы (исключая таблицу user_group_cr). В любом случае это, безусловно, лучшее решение, чем создание большого количества повторяющихся таблиц. – bpeterson76