Инструменты пользователя

Инструменты сайта


programming:php:bite-mask

Битовые маски

  1. Для хранения в БД необходимо использовать Int тип
  2. Для конвертации строки в бинарные данные использовать функцию Conv
select * from test where `value` & conv('10', 2,10);

define('CAN_READ', 1 << 0);   // 000001
define('CAN_CREATE', 1 << 1); // 000010
define('CAN_EDIT_OWN', 1 << 2);   // 000100
define('CAN_DELETE_OWN', 1 << 3); // 001000
define('CAN_EDIT_ANY', 1 << 4);   // 010000
define('CAN_DELETE_ANY', 1 << 5); // 100000

    // Функции проверки
    function isCanRead($sRule) {
        return ($sRule & CAN_READ) ? 'Вы имеете права на чтение информации<br />' : '';
    }
    function isCanCreate($sRule) {
        return ($sRule & CAN_CREATE) ? 'Вы имеете права на создание информации<br />' : '';
    }
    function isCanEdit($sRule) {
        return ($sRule & CAN_EDIT_OWN) ? 'Вы можете редактировать только вашу информацию<br />' : '';
    }
    function isCanEditAny($sRule) {
        return ($sRule & CAN_EDIT_ANY) ? 'Вы можете редактировать любую информацию<br />' : '';
    }
    function isCanDelete($sRule) {
        return ($sRule & CAN_DELETE_OWN) ? 'Вы можете удалять только вашу информацию<br />' : '';
    }
    function isCanDeleteAny($sRule) {
        return ($sRule & CAN_DELETE_ANY) ? 'Вы можете удалять любую информацию<br />' : '';
    }

function mascka($ar)
{
        $r = 0;
        foreach ( $ar as $t) $r |= 1 ^ $t;
        return $r;
}
 
$vr = mascka(Array(1,8,32,2048));
programming/php/bite-mask.txt · Последнее изменение: 2017/03/27 11:26 — artur

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki