2013-07-22 3 views
2

Я хочу предоставить пользователю доступ к подписным страницам с помощью побитовых операторов. Как будто, если разрешение пользователя для страницы равно 60, то он сможет видеть только те страницы подписки, которые установлены на 2,3,4,5 (например, 2^2 = 4,2^3 = 8,2^4 = 16,2^5 = 32 так, 32 + 16 + 4 + 2 = 60, так что он может просматривать страницы, которые разрешение ID = 2,3,4,5)Рассчитать индексный номер значения - побитовый вид

public function permission($perm) 
    { 
    $this->permission = ~$perm & $this->permission; 
    } 

Я использовал этот код, но это бесполезно мне нужна помощь и suggesations ....... Спасибо :)

+0

Я не знаю, почему этот вопрос помечен [тег: MySQL], но вы можете заглянуть в его [ 'SET'] (HTTP: //dev.mysql.com/doc/en/set.html). – eggyal

ответ

2

Добавление разрешения:

$this->permission |= $perm; 

Проверка, если установлено разрешение:

$is_permitted = (bool)($this->permission & $perm); 

Проверка которые установлены разрешения:

for ($permissions = array(), $i = ceil(log($this->permission, 2) + 0.1) /* floating point imprecision */; $i >= 0; $i--) 
    if ($this->permission & (1 << $i)) 
     $permissions[] = $i; 
+0

Есть ли другой способ выполнить эту задачу ... –

+1

так вы используете побитовые операторы; зачем вам нужен другой путь? – bwoebi

+0

Я пробовал этот код, но я не уверен, что он будет работать или не так ... –

 Смежные вопросы

  • Нет связанных вопросов^_^