Имитация прав доступа
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- Former team member
- Сообщения: 2233
- Стаж: 16 лет 4 месяца
- Благодарил (а): 142 раза
- Поблагодарили: 140 раз
Имитация прав доступа
Кто бы ни открыл страничку скрипта, нужно сделать так, будто её открывает гость (открывать с правами гостя), но без потери авторизации и других багов. Как это сделать?
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Имитация прав доступа
По идее, чтобы глубоко не рыть, просто заменить у объекта $auth эти праметры
на гостевые.
Код: Выделить всё
[acl] => Array
(
[0] => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000000000000000
[1] => 10000010000001000011001000100000000000000000000000000000000000
[2] => 11111111111111111111111111111111111111111110000000000000000000
[3] => 11111111111111111111111111111111111111111110000000000000000000
[4] => 11111111111111111111111111111111111111111110000000000000000000
[5] => 10000010000001000011001000100000000000000000000000000000000000
[6] => 10000010000001000011001000100000000000000000000000000000000000
)
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- Former team member
- Сообщения: 2233
- Стаж: 16 лет 4 месяца
- Благодарил (а): 142 раза
- Поблагодарили: 140 раз
Re: Имитация прав доступа
Sheer
Не знаю, не знаю, если тупо заменить, то валидацию точно не пройдёт, скажут "тупо заменил".
Не знаю, не знаю, если тупо заменить, то валидацию точно не пройдёт, скажут "тупо заменил".
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: Имитация прав доступа
Ну и забей. Или используй функцию
function ghost_permissions($from_user_id, $to_user_id)
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- Former team member
- Сообщения: 2233
- Стаж: 16 лет 4 месяца
- Благодарил (а): 142 раза
- Поблагодарили: 140 раз
Re: Имитация прав доступа
Решение следующее:
Код: Выделить всё
// Делаем резервную копию своих исходных прав
$backup = array(
'user_data' => $this->user->data,
'auth' => $this->auth
);
// Вытаскиваем права гостя на время
$sql = 'SELECT * FROM ' . USERS_TABLE . '
WHERE user_id = ' . ANONYMOUS;
$result = $this->db->sql_query($sql);
while ($row = $this->db->sql_fetchrow($result))
{
$this->user->data = $row;
$this->auth->acl($this->user->data);
}
$this->db->sql_freeresult($result);
========= ИСПОЛНЯЕМ ТУТ ЛЮБОЙ КОД, КОТОРЫЙ ТРЕБУЕТ ГОСТЕВЫЕ ПРАВА =========
// Возвращаем исходные права обратно
$this->auth = $backup['auth'];
$this->user->data = $backup['user_data'];
unset($backup);