Я прочитал противоречивую информацию по этой теме, поэтому я надеюсь, что с учетом предложенного сценария один план будет более идеальным, чем другой.
В моем случае есть «пользователи», которые имеют доступ к «группам», которые состоят из «разделов». Каждый раздел может иметь различный уровень разрешений в зависимости от того, как настроен пользователь. Так что я могу быть «администратором» для раздела, в то время как мой коллега «базовый».
После входа в систему пользователь выбирает группу, которой он хочет управлять / просматривать. Мой первоначальный план заключался в поиске информации о пользователе / группе / разделе / разрешении и сохранении в массиве в сеансе, как ...
$_SESSION[group_id][sectioin_id]['permission'] = 7; // 1+2+4 (R+W+X)
Затем, когда они переходят на страницу, я могу посмотреть, в какую группу они входят, посмотреть, в каком разделе они находятся, и отобразить соответствующую информацию, основываясь на их разрешениях.
В качестве альтернативы, я мог бы создать сценарий поиска в БД, чтобы проверить эту информацию, но он должен будет просмотреть несколько объединенных таблиц и проанализировать результаты для КАЖДОЙ СТРАНИЦЫ. Это кажется мне неэффективным, но из того, что я читаю о том, как сессии пишутся для каждой страницы, это может быть не так.
Спасибо за любые идеи / предложения.
// ---- больше информации о возможном размере сеанса
В настоящее время группа имеет максимум 5 разделов, содержащих до трех фрагментов данных. Максимальный размер сеанса в настоящее время будет примерно таким:
$_SESSION[1][1]['permission'] = 7;
$_SESSION[1][1]['type'] = 'paid';
$_SESSION[1][1]['expires'] = '2011-08-01';
$_SESSION[1][2]['permission'] = 7;
$_SESSION[1][2]['type'] = 'free';
$_SESSION[1][3]['permission'] = 7;
$_SESSION[1][3]['type'] = 'paid';
$_SESSION[1][3]['expires'] = '2011-08-01';
$_SESSION[1][4]['permission'] = 7;
$_SESSION[1][4]['type'] = 'paid';
$_SESSION[1][4]['expires'] = '2011-08-01';
$_SESSION[1][5]['permission'] = 7;
$_SESSION[1][5]['type'] = 'free';
Это может быть в случае, когда 1,3,4 раздела находятся на платном уровне, а 2,5 - в бесплатной версии.
Это слишком много материала для сеанса, чтобы отслеживать за логин?