YILIN SORUSU :) ADMİN YETKİ GRUPLARI OLUŞTURMA VE BU YETKİLERE GÖRE İŞLEMLER ?
evet arkadaşlar
ben çok php bilgisine sahip değilim ama bir çok şeyi rahatlıkla yapabiliyorum
istediğim çoğu şeyi yaptım şimdiye kadar
en anlamadığım iş de bu array işleri bu aralar çok kullandığım için biraz aşinalığım var.
sorum şu :
tablo admin
id---kadi---sifre---yetkiid
1---admin---admin----1
2---yılan----yılan----2
3---saffet---saffet---4
tablo yetki
id---yetkiad----ekle----sil----guncelle
1----admin------1--------1--------1
2-----ssss------1--------0--------0
4----ddd--------0-------0---------1
şimdi ben bunlara kayıt ekleme vs işlemler de sorun yok.
admin girşini yapıp session ile yetki de okutuyorum
ama sonraki işlemleri bir türlü yapamıyorum.
ben admin tablosundaki saffet e yetki 1 dediğim zaman yetki tablosundaki id si 1 olan
ekle sil güncelle yetkileri tanımlı olması gerekiyor
buna görede sayfada
ekle
sil
güncelle
butonları active disabled şeklinde ayarlamak istiyorum.
çok baktım sayfalara böyle bilgiye aç biri gibi düşünürsek onu ararken başka bişi buluyorum inceliyorum o o ara aklımdan çıkıyor
sonra yine aramaya devam.
değerli bilgilerinizi paylaşmanız dileğiyle.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
şablon olarak yok. kendin yazarsan daha az uğraşırsın bence. işlemin gerçekleceği sayfa için örnek bir yapı;
if(isset($_POST)){
if($sil === true){ÇALIŞACAK KODLAR}else{echo "silmek için izniniz bulunmuyor!..";}
} bir sürü şey yazdım, sonra sildim :) koddan ziyade, mantıklı yapılar oluşturmaya odaklanın.
oda var tabi
elinde seniny apmış olduğun boş bir uygulama varmı bununla ilgili.
yukarıdaki yapı zaten istediğin şeyi karşılıyor 2 farklı tablo önermemem, sistemin nasıl işleyeceğini bilmediğimden kaynaklanıyor. okul yönetim sistemi gibi bir şey hazırlıyorsan öğretmenler ve öğrenciler gibi iki farklı tablo yapıp yetkileri burada tutabilirsin.
forum mantığı üzerinden bir önek vereyim.
if(($_SESSION['yetki'] == $admin && $_SESSION['yetki'] == $supermoderator) || (($_SESSION['yetki'] == $moderator)){
//bir konu olduğunu varsayalım
if($admin){ echo '<button>konuyu sil</button>';}else{echo 'işlem gerçekleştirmek için yetkini yok';}
}
ikinci örnek ise belki daha kullanışlı olabilir post ettiğin sayfa bir sql koşulu eklersin örneğin "selec * from kullanicilar where yetki="'.$_SESSION['yetki'].'"
yani konuyu butona uygulamak çok mantıklı değil, sayfayı göstermek için yetkileri kullanmak, daha sonrasında işlem sayfasında bunu uygulamak da seçenekler arasında session yönetmeyi zaten biliyorsun koşulda yazabiliyorsun gerisi senin mantığına kalıyor bazen düşünmek yazmaktan vakit alıyor o ayrı tabi : ) olabildiğince basitten başla üstüne koyarak ilerle o zaman daha kolay olur, sonra bir framework kullanara mevcut projeyi tekrar elden geçir oraya entegre et
@mutluol
kardeşim zaten basit anlamda sadece 0 1 2 ile yetki belirler
kod tarafından koşul ile işlem yap yapma koşul kontol fonksiyonları ile bunları çözebiliriz.
ben şahsen hiç yapmadım 1 kere denedim yapmak istediğim şey yapamadım.
ama koşulluk 0 1 2 üzerinden tek yetki işi ile yapmışlığım var.
komplike bir sistem için düşünürsek.
yönetici veya üye herneyse grupları statik değil dinamik olucak yani
panelden
yönetici grubu eklenebilirr
bu gruplara var olan sütün değerleri üzerinden atama yapılabilir.
bunlardan sonra
yöneticiyi bu gruplardan birine atarız ve yönetici verilen grup içerisindeki işlem hakları doğrultusunda işlem yapabilir.
yazarken bile karışık olan birşeyin basit olacağını zaten düşünmedim de :)
kolay düşünürsek
elimde admin demo editor var
admin yetki 1 ise
if($_SESSION["adminyetki]== 1){
DİYE ona ait kodları yansıtabliriz ama bu sefer tek sayfa içerisinde
3 farklı kod yazmam lazım
else 2ye eşit se
else 3 e eşitse
else 4 e eşit se
bu sefer de çok uğraşmış oluyoruz
demo yine bişi değil
sadece butonlara koşul koyarsın postlarla beraber olur biter
ama diğer şekillere girince işin içinden çıkılmaz hale gelebiliyor.
o yüzden bu işi tam olarak çözebilicek tek olay bana göre
yönetici grubu
yönetici yetki alanları
yöneticiler
oop ile sanırım kod karmaşası kısaltılabilir fakat ben o kadar yetkin bilgiye sahip değilim malesef.
bu alana html asp ile başladım sonra php ye geçtim ufkum genişledi php ile pdo derken
yeni yeni js üzerinden çalışma yapmaya başlıyorum
fakat kabul edelim ki 25 yaşında da değilim keyif için yapıyorum bu işi
yaş ta olmuş 40 3 tane evlat var öğrenmek bazen zor oluyor mantık kurarken bile kafada elli tilki varken 51. tilki bazen olmuyor :))))
öncelikle ben böyle bir yapının gerçekleştirilecek işlem ve koşulların sayısını arttıracağını düşünerek, tablo yapısını değiştirmeni önererek başlıyorum ve anlatımı da bu öneri üzerinden gerçekleştirmek istiyorum.
önce mantığı biraz daha iyi kavramak için, kendine bir yol haritası çıkartmalısın. kaç kullanıcı grubu olacak, bunları diğerlerinden ayırt eden nitelikler ne?
eğer yapı basit ise tek tablo işini çözecektir. ben bütün tablolarımda dizine bir txt dosyası açarak, hangi kolonun değerinin ne anlama geldiğinide ayrıca not ederim, ki ileride kafa karışıklığı olmasın, örneğin 0 kapalı, 1 aktif, 2 yasaklı gibi bir değer atıyorsun, mutları ileride hatırlamayabilirsin mutlaka not et. kullanıcılar(0 aktif, 1 kapalı, 2 yasaklı) gibi bir not ileride hayatını kurtarır.
yapıya gelirsek;
senin kullandığın biçimde değil, önerim ile örneklendireceğim. kullanıclar adında bir tablomuz olsun
id, isim, yetki
en basit durumda bu üçü bile işini çözecektir. nasıl çözecektir? : ) önemli olan sayfanın içerisinde nasıl koşullandırdığın, eğer bir sayfa farklı yetki gruplarında kişiler aynı anda girebiliyorsa if($_SESSION["yetki"] == 0){} gibi basit bir koşul ile sayfayı yazdırabilirsin veya sadece bir grubun yetkisi yok ise, burada operatör devreye girer, eşittir yerine şöyle olabilir >=2 bu ikiye eşit ve ikiden büyük yetkiye sahip kişilerce çalışacak bir kod betiği için kullanılabilir
biraz daha geliştirmek istedik. okuma, yazma ve görüntüleme vs. için ayrı ayrı yetkiler vereceğiz diyelim. o zaman tablo yapımız aşağıdaki gibi olursa daha mantıklı olacaktır;
id, isim, yetki, okuma, yazma,
örneğin aynı yetkiye sahip bir grup içerisinde iki adminden birine sadece yazma yetkisi vermek istiyorsun, yine yukarıdaki mantıkla işlem gerçekleştirebiliyorsun. sadece koşulun biraz uzuyor.