Предишната тема :: Следващата тема |
Ползвате ли битови операции (&, |, ^, ~) в програмите си? |
Да почти винаги! |
|
15% |
[ 2 ] |
Рядко и то за други цели |
|
15% |
[ 2 ] |
Не мисля, че е нужно в случая |
|
0% |
[ 0 ] |
Нищо не схванах |
|
15% |
[ 2 ] |
Предпочитам да пия бира |
|
53% |
[ 7 ] |
|
Общо гласове : 13 |
|
Автор |
Съобщение |
escaper Дали да стана антиквар ?
Регистриран на: 03 Юни 2004 Мнения: 41 Общо думи: 0 Местожителство: В контейнера
|
Пуснато на: Нед Ное 07, 2004 9:42 pm Заглавие: Ползвате ли битови операции (&, |, ^, ~) в програмите си |
|
|
Питам защото имахме едно спорче с един приятел, дали
е по добре при съхраняването на правата за достъп
на една програма да се ползват променливи флагове или
една променлива за флагов регистър.
Дали да бъде:
unsigned char can_log = 0;
unsigned char can_read = 0;
unsigned char can_write = 0;
или
unsigned char flags = 0; (0b00000000) всеки бит да редставлява флаг
Аз предпочитам второто! _________________ /*
* Psychedelic Group
* Ние сме на всеки switch и хъб от тук
* до края на света...
*/ |
|
Върнете се в началото |
|
|
EMERALD Не е лесно !
Регистриран на: 25 Сеп 2003 Мнения: 1312 Общо думи: 8,181 Местожителство: Габрово - София
|
Пуснато на: Нед Ное 07, 2004 10:04 pm Заглавие: |
|
|
Вторият определено и на мен ми допада, макар досега да съм го използвала _________________
|
|
Върнете се в началото |
|
|
escaper Дали да стана антиквар ?
Регистриран на: 03 Юни 2004 Мнения: 41 Общо думи: 0 Местожителство: В контейнера
|
Пуснато на: Нед Ное 07, 2004 10:06 pm Заглавие: |
|
|
Личи си че си завършила МГ _________________ /*
* Psychedelic Group
* Ние сме на всеки switch и хъб от тук
* до края на света...
*/ |
|
Върнете се в началото |
|
|
anatoli Не е лесно !
Регистриран на: 19 Сеп 2003 Мнения: 956 Общо думи: 16,474 Местожителство: Here .. or there .. somewhere
|
Пуснато на: Нед Ное 07, 2004 10:53 pm Заглавие: |
|
|
А замисляте ли се, ако това се пази в mysql колко пада скороста при търсене на права.
Скоро попаднах на такъв проблем, оказа се, че mysql не може да прави побитови операции в SELECT-а си. И при такова нещо, трябва да се select-не цялата users таблица примерно, и да се прави проверка на всеки един от тях, докато ако бяха в различни променливи скороста щеше да бъде по-голяма защото показването на потребители с право X щеше да стане много бързо само при добавянето на едно WHERE X=1 в select-a (особенно ако X е ключ в таблицата). _________________ Който не плаща в кръчма, плаща в аптека ! |
|
Върнете се в началото |
|
|
EMERALD Не е лесно !
Регистриран на: 25 Сеп 2003 Мнения: 1312 Общо думи: 8,181 Местожителство: Габрово - София
|
Пуснато на: Нед Ное 07, 2004 11:00 pm Заглавие: |
|
|
Аз не Хувава забележка, ще я имам предвид. Мерси, коте, навярно ми спестяваш поне едно главоболие _________________
|
|
Върнете се в началото |
|
|
escaper Дали да стана антиквар ?
Регистриран на: 03 Юни 2004 Мнения: 41 Общо думи: 0 Местожителство: В контейнера
|
Пуснато на: Нед Ное 07, 2004 11:25 pm Заглавие: |
|
|
Предполагам че имаш в предвид за PHP и mySQL но нямах в предвид да се ползват в SQL заявката, а в кода на програмата, но все пак
Например следната таблица:
=============================
| id(PRI KEY) | u_name | u_table | u_perms|
Където u_perms са правата на достъп на потребителя, и u_perms се мени от 0 до 255 т.е. от 00000000 двоично до 11111111 двоично.
След това например вземаме правата чрез заявка от рода на:
Код: | function get_perms_dummy($user)
{
$db_query = sprintf("SELECT u_perms FROM name_of_table WHERE u_name=\"%s\"", $user);
$result = mysql_query($query, $db_link);
if(!$result) {
printf(mysql_error($db_link);
return -1;
}
$db_data = mysql_fetch_array($result);
return $db_data['u_perms'];
}
define('can_post', 1);
define('can_fuck', 2);
define('can_drink', 4);
define('can_smoke', 8);
define('can_be_fan', 16);
define('B1', 32);
define('B2', 64);
.......... и т.н. степени на 2-ката общо осем
function isset_flag($flagreg, $flag)
{
return ($flagreg == ( $flagreg | $flag )) ? 0 : 1;
}
И нейде в PHP кода на happy_fuck.php например:
<?php
$u_perms = get_perms_dummy($_POST['user']);
if(!isset_flag($u_perms. can_fuck)){
print("Ще я караме на ръчна!");
или
Header("Location: somewhere.php");
} else {
do_allowed_fuck_with_penka_kvartalnata($penis, $lenght);
}
?> |
,а при положение, че не е с битови операции
==============================================
| id(PRI KEY) | u_name | u_table | can_fuck | can_smoke | can_1 | .....|
Още 7 излишни колони. И разбира се по-бавна заявка. Всяка колона
за една нула или еденица! И още куп неща които ме марзи да обясня. _________________ /*
* Psychedelic Group
* Ние сме на всеки switch и хъб от тук
* до края на света...
*/ |
|
Върнете се в началото |
|
|
anatoli Не е лесно !
Регистриран на: 19 Сеп 2003 Мнения: 956 Общо думи: 16,474 Местожителство: Here .. or there .. somewhere
|
Пуснато на: Пон Ное 08, 2004 10:34 am Заглавие: |
|
|
не споря, и не точно PHP, просто споменавам реална ситуация, и колко се забавят нещата. Ако не се пазят нещата в БД като sql-а, то сичко е супер. _________________ Който не плаща в кръчма, плаща в аптека ! |
|
Върнете се в началото |
|
|
ivelin80 Вчера си купих компютър
Регистриран на: 15 Яну 2005 Мнения: 4 Общо думи: 0
|
Пуснато на: Съб Яну 15, 2005 4:53 pm Заглавие: |
|
|
не знам защо трябва да си усложняваш живота излишно като може да си въведеш едно стрингово поле в базата (втория начин). Това, че са го писали по книгите не значи че е най-френдли метода :)
а не ми стана ясно само кво общо имаха побитовите операции с цялата работа (освен заглавието) ... :) |
|
Върнете се в началото |
|
|
ivelin80 Вчера си купих компютър
Регистриран на: 15 Яну 2005 Мнения: 4 Общо думи: 0
|
Пуснато на: Съб Яну 15, 2005 5:00 pm Заглавие: |
|
|
i malko primer ... :
[code]
// 1 = true
// 0 = false
// i imash pole "colPermissions char(3) DEFAULT '000' " v bazata
// uveriavash se che nqma da ima prazni promenlivi:
($post["canread"] != "")?$canRead=$post["canread"]:$canRead=0;
($post["canWrite"] != "")?$canWrite=$post["canWrite"]:$canWrite=0;
($post["canExec"] != "")?$canExec=$post["canExec"]:$canExec=0;
$sql = "SELECT column1 FROM dbOwner.tableName WHERE colPermissions='".$canRead.$canWrite.$canExec."' "
// i execute na zaiavkata
[/code] |
|
Върнете се в началото |
|
|
ivelin80 Вчера си купих компютър
Регистриран на: 15 Яну 2005 Мнения: 4 Общо думи: 0
|
Пуснато на: Съб Яну 15, 2005 5:01 pm Заглавие: |
|
|
samo sori che sum sbarkal "$_POST" s "$post" :) |
|
Върнете се в началото |
|
|
A3 нормален
Регистриран на: 11 Окт 2003 Мнения: 394 Общо думи: 111 Местожителство: Габрово 5300, ул. Янтра 6
|
Пуснато на: Пон Мар 07, 2005 10:40 am Заглавие: |
|
|
escaper, колко системно си писал? |
|
Върнете се в началото |
|
|
|