programming:php:bite-mask
Битовые маски
- Для хранения в БД необходимо использовать Int тип
- Для конвертации строки в бинарные данные использовать функцию 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