loc adlı üyeden alıntı: mesajı görüntüle
Daha önceden böyle birşeye ihtiyacım olmadığı için şuanda mantık yürütmekte biraz zorlanıyorum ama fikir açısından bir noktaya kadar gelebildim.

Kullanıcı gruplarına belirli yetkiler vererek bulundukları kategoride yetkisi var mı yok mu kontrolü yapıp buna göre işlem yapmasını sağlıyorum.

R - Read
W - Write
D - Delete
U - Upload
DL - Download
M - Management

Şeklinde gruplarıma göre yetki başlıklarımı belirledim ve her birine bir rakam gelecek şekilde oluşturdum. Kullanıcı gruplarım:

1- Guest
2- Inactive
3- Member
4- Contributor
5- Moderator
6- Administrator
7- Banned

Bu kullanıcı gruplarını üstteki yetki başlıklarına göre numaralandırdığımda şöyle bir durum ortaya çıkıyor:
6111111,5111110,4112210,3110010,2100000,1100000,70 00000

Bu işlemi kategorilerimi oluştururken kullanıcı grubu başlığına göre hangi kategoride hangi yetkilerin olması gerektiğini belirterek kaydediyorum. Yani her kategorinin bir auth sütunu var bu sütun içinde her grubun yetkisine göre üstteki gibi numaralar bulunuyor. Kafama takılan kısım şu, bu yetki numaralarını parçalayıp tek tek sorgulayarak gerekli alanda ne yetkisi var kontrolünü yapabiliyorum ama bunu bir fonksiyon aracılığı ile tek seferde yapmak mümkün müdür? Örneğin userauth isimli bir fonksiyon olsa kullanıcı grubu id sine göre userauth($groupid, "w") dediğim anda o alana yazma yetkisi varsa yazabilsin istiyorum mesela. Bu noktada beyin iyice durdu. Birkaç örnek gösterebilirseniz veya fikir verebilirseniz sevinirim.
merhaba,

http://www.php.net/manual/tr/languag...rs.bitwise.php

elimden geldiğince basit birşey yazıyım, yazım hataları olabilir siz kontrol edersiniz.

$yetkiler = array(
'R' => 1,
'W' => 2,
'D' => 4,
'U' => 8,
'DL' => 16,
'M' => 32
);

yetki sütunuma yetki numaralarının toplamını kayıt edeceğim.

ör
Read
Write
download

yetki verirsem 1+2+16 yani 19 (yetkiler sütunuma 6111111 yerine sadece 19 ekleyeceğim)

nasıl kontrol edeceğim?

function yetki_kontrol($istenilen_yetki, $kullanici_yetki) {
global $yetkiler ;
if ($istenilen_yetki & $yetkiler[$kullanici_yetki]) {
return true;
}

return false;
}

19 sayısı veritabanından kullanıcı yetki bilgisi olarak gelicek misal
yetki_kontrol('DL',19); //TRUE
yetki_kontrol('D',19); //FALSE


yetkilere yenisini eklerken


$yetkiler = array(
'R' => 1,
'W' => 2,
'D' => 4,
'U' => 8,
'DL' => 16,
'M' => 32,
'x' => 64
);

vericeğim sayıların 2^ olmasına dikkat edin.

iyi çalışmalar