[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Настройки приватности
Arh
Здравствуйте люди добрые, поделитесь опытом =)
Надеюсь сам допру, пока создаю тему.

Разрабатываю корпоративный проект, давно пора разобраться с настройками приватности, но котелок тормозит как только об этом подумаю.

Вообщем есть сейчас таблица с юзерами, обычная, ничего особенно (id,login,mail и т.д.)

Необходимо дать пользователям возможность скрывать некоторые поля, почту к примеру или icq.

Как я думаю: продублировать поля в таблице с префиксом p_ (приватность)
то есть - есть поле mail , для него поле p_mail
есть ip - p_ip
в полях с префиксом p_ будет значение 1\0 - (Показывать\Скрыть)

Вроде бы всё хорошо
if($row['p_mail']) {
echo $row['mail'];
} else {
echo 'Поле скрыто';
}


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

Что, делать рядом еще поля типа d_mail (default) ? бред мне кажется.
К тому же в первую таблицу планируется динамически добавлять поля, такие как icq , room, phone и т.д.
И тут я не знаю на сколько плохо, когда таблица разрастается горизонтально, тем более если к каждому полю добавлять два поля с настройками (icq,p_icq,d_icq).

Тут возникла идея сделать еще одну таблицу где просто будут - id поля , имя поля, и значение по умолчанию (name,default) а и еще поле allow со значением 0\1 можно ли его скрывать или нет.
Если allow == 1 значит пользователь может изменить настройки приватности к этому полю.

Таким образом мы избавляемся от полей типа d_mail, но выборка будет сложнее.
Теперь бы еще избавиться от полей типа p_mail.

Тут возникла идея сделать еще одну таблицу, уже блин третью.
В это таблице будет - вот тут не знаю, либо сделать поля типа p_mail
То есть полная копия первой таблицы, только в значениях будут нули, единицы вместо имён и почт
либо сделать так
id узера, id поля, новое значение

1,1,0
13,12,1
1,2,1
1,3,1

но так база разрастётся кажется.

Вот пока писал, ни чего другого не придумал =(
На мой взгляд 3 таблицы это как то жестко.
Как будет выборка выглядить?

вместо обычного запроса нужно будет делать 3

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
sign63
Может просто проверку на роль Юзера? (по ролям)так сказать... Если админ или Зареганный пользователь то отображай, иначе нет

_____________
user posted image
Zzepish
Я по провам делал:
If($registered && $privs>=0){}
Arh
Цитата (sign63 @ 26.03.2013 - 12:57)
Может просто проверку на роль Юзера? (по ролям)так сказать... Если админ или Зареганный пользователь то отображай, иначе нет

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

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
inpost
Arh
показывать или нет, отдельное свойство, собственно, и хранить надо в отдельном поле (сюда же показывать отдельным группам пользователей). А будет ли в данной таблице или в соседней - зависит от запросов к данной таблице. Если постоянно пользуешься, то нет смысла на другую таблицу переносить, так как будут 2 запроса. А если редко, то нет смысла захламлять одну таблицу редкими данными.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Arh
Цитата (Zzepish @ 26.03.2013 - 13:03)
Я по провам делал:
If($registered && $privs>=0){}

Группы, гости и т.д в системе уже есть и там отдельные настройки что можно, а что нельзя, но эти настройки запрещают к примеру смотреть модуль такому то пользователю или такой то группе разрешать доступ в админку.
Это привилегии другого типа, как бы глобальные, а в моём случае нужны на уровне пользователя.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Цитата (inpost @ 26.03.2013 - 13:16)
Arh
показывать или нет, отдельное свойство, собственно, и хранить надо в отдельном поле (сюда же показывать отдельным группам пользователей). А будет ли в данной таблице или в соседней - зависит от запросов к данной таблице. Если постоянно пользуешься, то нет смысла на другую таблицу переносить, так как будут 2 запроса. А если редко, то нет смысла захламлять одну таблицу редкими данными.

Я вот еще что боюсь.
К примеру изначально в таблице 10 полей.
Для каждого поля будет создано еще поле показывать или нет = 20 полей
А если сделать еще - показывать конкретным пользователям + 10 полей
Конкретным группам + 10 полей и того 50
+ всё равно 1 таблица с дефолтными настройками)
+ еще поля могут динамически добавляться)

Но нужно это довольно часто, так как основное назначение сайта - это список сотрудников, где многие захотят кое что скрыть.

Хотя в новостях к примеру это совсем не нужно, там выводиться только логин пользователя, да и в тех же комментах.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
inpost
0 - никому
1 - всем
2 - только группе А
3 - только группе Б
4 - только группе В
5 - А + Б
6 - А + В
7 - Б + В

В задаче не стояло скрывать от конкретных пользователей. Как в ВК:
- только группе А (только друзьям)
- только группе Б (зарегистрированным)
Далее проверка есть ли в друзьях или зарегистрирован - показываешь.

Ну а если лично одному показывать, другому не показывать, то тут точно отдельная таблица.
То есть что я говорю, под определённые случаи - ОДНО, под другие - другое, на то мы и программисты, чтобы подбирать под конкретные задачи.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Arh
Цитата (inpost @ 26.03.2013 - 14:26)
0 - никому
1 - всем
2 - только группе А
3 - только группе Б
4 - только группе В
5 - А + Б
6 - А + В
7 - Б + В

В задаче не стояло скрывать от конкретных пользователей. Как в ВК:
- только группе А (только друзьям)
- только группе Б (зарегистрированным)
Далее проверка есть ли в друзьях или зарегистрирован - показываешь.

Ну а если лично одному показывать, другому не показывать, то тут точно отдельная таблица.
То есть что я говорю, под определённые случаи - ОДНО, под другие - другое, на то мы и программисты, чтобы подбирать под конкретные задачи.

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

То есть попробовать сделать так?
1 таблица конкретно под данные (имена, пароли, почты, ip)
2 таблица с теми же полями, только тип tinyint для правил
3 таблица с настройками по умолчанию

Или так
1 тоже самое
2 тут поля - id пользователя, имя поля для которого меняется правило, и само правило?
3 тоже самое


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Zzepish
Я бы сделал еще одно поле с привелегиями, и уже рулил от него
А еще лучше- в это поле пилил бы через разделитель привелегии, и потом explode и in_array
Arh
Цитата (Zzepish @ 26.03.2013 - 18:07)
Я бы сделал еще одно поле с привелегиями, и уже рулил от него
А еще лучше- в это поле пилил бы через разделитель привелегии, и потом explode и in_array

Такое уже есть) еще раз - это разные вещи если я правильно понимаю =)

Тут именно пользователь даёт доступ к своей информации, а привилегии типа "Видеть скрытые поля" , "Удалять комментарии других пользователей" и всё в таком духе - такой функционал есть уже =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.