Вход на сайт

Lukin

Новичок
Вход на сайт

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

rotoZOOM

ACM maniac
cookies используют для автовхода (по желанию юзера), а сессии используют всегда для хранения параметров текущего юзера.
 

maxru

МИФИст
1) Создать таблицу пользователей в бд (например users )
UNSIGNED INT userid [primary]
VARCHAR(скока надо) username
VARCHAR(скока длина хэша) userpassword
UNSIGNED SMALLINT (ведь групп не больше 256) groupid

2)Создать таблицу групп в бд (например groups)
UNSIGNED SMALLINT groupid [primary]
VARCHAR(скока надо) groupalias (псевдоним группы, не показывать же id)

Ну и для ограничения доступа
3)создать таблицу групп в бд (например access)
UNSIGNED INT accessid
TEXT groups (представляет собой сериализованный массив или лучше перечень groupid через точку. Потом explode())

У меня таблица access используется для назначения прав просмотра шаблона.

Пример кода (ЭТО ПРИМЕР, без критики!)

PHP:
извините, нарушил праила форума
 

WP

^_^
maxru
За такие "примеры" надо расстреливать. И explode это бред, надо делать отдельным рядом.
 

maxru

МИФИст
В смысле? Чем тебе explode() не угодил?
Есть ряд 1.3.534.56.35.4 с id групп.
По-моему самое удобноеиз того, что придумали - explode()
Поправь, если ошибаюсь.
 

antivir

Новичок
Автор оригинала: Trader
Лучше сессии, потому что куки могут быть выключены
забыл добавить - если это только админская часть. в публичной части нельзя допускать использовать SID в URL, ибо это черевато последствиями.
 

maxru

МИФИст
antivir, какими последствиями? Юзер испугается и в обморок упадёт?
 

SelenIT

IT-лунатик :)
maxru
Ага. Особенно когда увидит, как его SID украли и творят от его имени черт-те что.
 

maxru

МИФИст
Ага, прокрадутся в дом, оставят сзади админа тайную вебкамеру и будут следить, пока не увидят SID 8)
 

SelenIT

IT-лунатик :)
Не обязательно, доверчивый юзер вполне может сам прислать этот SID вместе с остальной ссылкой по аське 8)
 

kruglov

Новичок
SelenIT
Доверчивый юзер кликнет на присланную ссылку - и SID у нас в реферерах.
 

kruglov

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

maxru

МИФИст
Автор оригинала: kruglov
maxru
Вам нужно из базы выбрать всех юзеров, принадлежащих такой-то группе. Какой будет запрос?
Что-то вы не поняли.
Мне нужно выбрать ВСЕ ГРУППЫ юзеров, которым разрешен доступ к шаблону.
Более рационального способа, чем перечислить через "."их я просто не вижу.
Хотя вариант:
UINT access_id
UINT user_group
Тоже можно использовать.
В таком случае ещё один вопрос:
так рационально? Получается дублирование access_id, хотя при выборке и получится нужный нам массив из id групп, которым дозволен доступ.

РАЗМЫШЛЕНИЯ:
Известен access_id конкретного шаблона.
[sql]'SELECT user_group FROM access_rules WHERE access_id='.$template_access_id;[/sql]
Получили массив с id групп.
PHP:
if(in_array($usergroup_id_we_know,$previous_query_result))
{
    $this->AllowAccess=true;
}
Мда, этот код выглядит проще, чем то, что я наворотил.
 
Сверху