вопросы конфиденциальности - база данных - PullRequest
3 голосов
/ 19 июня 2011

если у меня есть эта таблица:

users
-----
id_users (pk)
age
name
gender
salary

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

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

спасибо

Ответы [ 2 ]

3 голосов
/ 19 июня 2011

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

Я бы предложил таблицу с составным PK из трех столбцов :

hide_details
------------
visitor_id
user_id
what

Некоторые примеры данных будут:

visitor_id      |       user_id     |       what
    1                       2               age
    1                       2               name
    3                       4               salary

Эту схему таблицы не нужно будет обновлять в будущем, если вы добавите еще один столбец в таблицу ваших пользователей. Предложение, если вы хотите сделать это удивительно быстро, вы можете сопоставить имена столбцов с целыми числами и использовать их в логике своего приложения для сравнения. Например. name = 1, age = 2 и т. д. Итак, когда вы делаете сравнение, чтобы скрыть имя или нет, вы просто проверяете, есть ли запись с этим целым числом в массиве hide.

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

Е.Г.

$hide = array('name', 'age', 'salary');

Затем вы можете проверить как:

echo (in_array($hide)) ? '' : '<div>Name:'.$name.'</div>';
0 голосов
/ 19 июня 2011

Вам необходимо иметь таблицу прав для лиц, которые просматривают данные. Он может иметь такие поля, как id_person, may_view_age, may_view_salary и т. Д.

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

Трудно предложить что-то более конкретное, если мы ничего не знаем о вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...