Вместо анализа строки, сохраните их как массив в $_SESSION
. Это значительно упрощает изменение отдельных разрешений без необходимости выполнять кучу строковых операций.
session_start();
$_SESSION['permissions'] = array();
$_SESSION['permissions']['dothis'] = TRUE;
$_SESSION['permissions']['dothat'] = FALSE;
$_SESSION['permissions']['doanother'] = TRUE;
Добавление
Возможно, вы уже поняли это, но я подумал, что добавлю, что проще всего взаимодействовать с ними с помощью нескольких крошечных функций. Это сэкономит много времени при наборе (и ошибок при вводе) и гарантирует, что все значения будут иметь логическое значение.
function grant($permission) {
$_SESSION['permissions'][$permission] = TRUE;
}
function revoke($permission) {
$_SESSION['permissions'][$permission] = FALSE;
}
// Test if the user is allowed to do $permission
// FALSE if the permission isn't set
function user_can($permission) {
return isset($_SESSION['permissions'][$permission]) ? $_SESSION['permissions'][$permission] : FALSE;
}
Вы можете просто назвать их как:
grant('dothis');
revoke('dothat');
if (user_can('doanother')) {
// congratulations you're allowed
}