İlk olarak bir veritabanımızın var olduğunu varsayıyorum. Çünkü admin panelimiz varsa bir de veritabanı olmalı.
veritabanımıza bir tablo ekliyoruz. Bu tabloda aşağıdaki alanları oluşturacağız.
Tablomuzun adı: yetkiler olsun elemanları da:
id
uyeID (sayı)
menuID (sayı)
silme (sayı)
ekleme (sayı)
düzeltme (sayı)
şeklinde olsun. siz bunları istediğiniz gibi çoğaltabilirsiniz.
Şimdi üyelerimiz olduğuna göre üyelerimizin gösterildiği sayfaya yeni bir sütun açalım.
Üyeler listemiz aşağıdaki gibi olabilir.
uyeler.asp
| Üye Adı | Yetkileri | İncele | Sil | |
| iismail | ismail@ozturkce.com | Gör | düzenle | sil |
Üyelerin yetkilerini gör diye bir link oluştururuz. Şimdi buraya kadar olan kısmı biraz bekleteceğiz.
Şimdi sırada sayfamızda bulunan menülere geldi. Örneğin sayfamızda Haberler, Ziyaretçi Defteri, Ürünler, Duyurular, Resimler gibi başlıklar olsun. Biz bu başlıkları da bir tabloda toplayacağız. Bu tabloya da menuler tablosu diyelim ve elemanları kısaca şunlar olsun:
menuID
menuAdi (metin)
sira (sayi)
Şimdi tablomuzda menüleri oluşturalım. Her menünün bir id değeri olmalı ki işimiz kolay olsun.
menuler.asp
menuler.asp
| menuID | menuAdi |
| 1 | Haberler |
| 2 | Ziyaretçi Defteri |
| 3 | Ürünler |
| 4 | Duyurular |
| 5 | Resimler |
Şimdi sıra menü yetkilerini vermeye geldi.
Üyelerin sayfasında her üye için yetkiler bölümü var. Bir üyenin yetkilerini görmek için gör linkine tıklayıp bu sayfadan yetkiler sayfasına bağlanırız. Yetkiler sayfasına üyenin id'sini querystringten göndeririz. Yani gör linki yetkiler.asp?uyeID=1 gibi bir değerle yetkiler sayfasına gelir.
Şimdi yetkiler sayfasını inceleyelim.
yetkiler.asp
Bu sayfanın kodları şöyle olabilir.
<table width="400" border="1" cellspacing="0" cellpadding="5">
<tr>
<td colspan="5" bgcolor="#e5e5e5"><strong>iismail</strong> adlı kullanıcının yetkileri.</td>
</tr>
<form action="yetkilerSave.asp" method="post" name="frmYetki">
<tr>
<td width="68" bgcolor="#e5e5e5"><strong>Sıra</strong></td>
<td width="169" bgcolor="#e5e5e5"><strong>Menü Adı</strong></td>
<td width="31" bgcolor="#e5e5e5"><strong>Ekle</strong></td>
<td width="40" bgcolor="#e5e5e5"><strong>Düzelt</strong></td>
<td width="30" bgcolor="#e5e5e5"><strong>Sil</strong></td>
</tr>
<%
'ÜyeID'sini alıyoruz.
uyeID = request.QueryString("uyeID")
'Yetki vereceğimiz menüleri çağırıyoruz
Set rsMenu = conn.execute("Select * from menuler")
while not rsMenu.eof
menuID = rsMenu("menuID")
'Daha önce bu üyeye yetki verip vermediğimizi kontrol ediyoruz. Eğer verdiysek checkbox seçili gelsin diye işlem yapıyoruz.
Set rsYetki = conn.execute("Select * from yetkiler where uyeID=" & uyeID & " and menuID=" & menuID & "")
'Eğer yetki verilmediyse daha önce tüm yetkiler boş gelecek.
if rsYetki.eof then
'Buradaki değerler default ayarlarınız olabilir.
ekle = 0
duzelt = 0
sil = 0
else
'yetkileri alıyoruz Yetki değeri Eğer 1 ise yetki var anlamına gelecek.
ekle = rsYetki("ekle")
duzelt = rsYetki("duzelt")
sil = rsYetki("sil")
end if
Set rsYetki = nothing
'Aşağıda checkboxların isimlerini çok dikkat edin. her birinde menuID'yi ekliyoruz. işimiz daha kolay olsun diye
%>
<tr>
<td align="center"><%=rsMenu("sira")%></td>
<td> <%=rsMenu("menuAdi")%></td>
<td align="center"><input type="checkbox" name="ekle-<%=menuID%>" <%if ekle="1" then response.Write("checked=""checked""")%> value="1" /></td>
<td align="center"><input type="checkbox" name="duzelt-<%=menuID%>" <%if duzelt="1" then response.Write("checked=""checked""")%> value="1" /></td>
<td align="center"><input type="checkbox" name="sil-<%=menuID%>" <%if sil="1" then response.Write("checked=""checked""")%> value="1" /></td>
</tr>
<%rsMenu.movenext
wend
Set rsMenu = nothing%>
<tr>
<td colspan="5" align="center"><input name="uyeID" type="hidden" id="uyeID" value="<%=uyeID%>"> <input type="submit" name="button" id="button" value=" kaydet "></td>
</tr></form>
</table>
Şimdi yetkiSave.asp sayfasını yapalım.
'önce Üye id'sini alıyoruz.
uyeID = request.Form("uyeID")
'yetkiler tablosundaki bu üyeye ait tüm yetkileri kaldırıyoruz. Çünkü yeni yetkiler verdik.
conn.execute("Delete * from yetkiler where uyeID="& uyeID)
'sonra menuler tablosu kadar döngü kurup formdaki verileri çağırıyoruz.
Set rsMenu = conn.execute("Select * from menuler")
while not rsMenu.eof
menuID = rsMenu("menuID")
'Eğer checkbox seçili gelmezse değerin sıfır (0) olacağını belirtiyoruz.
ekle = request("ekle-"& menuID)
if ekle = "" then ekle = 0
duzelt = request("duzelt-"& menuID)
if duzelt = "" then duzelt = 0
sil = request("sil-"& menuID)
if sil = "" then sil = 0
'Şimdi değerleri aldık yetkiler tablosuna kayıtları ekliyoruz.
conn.execute("insert into yetkiler(uyeID,menuID,ekle,duzelt,sil) Values(" & uyeID & "," & menuID & "," & ekle & "," & duzelt & "," & sil & ")")
rsMenu.movenext
Wend
set rsMenu = nothing
'işlem tamam geri dönüşü yapıyoruz.
Yetkilendirme işlemi bu kadar.
Şimdi son olarak da yetki kontrol işlemini yapalım.
Diyelim ki bir haberler.asp sayfamız var. Üyemiz admin paneline girdiğinde biz onun uyeID'sini almışız.
haberler.asp sayfasına giren bir üye ilk olarak yetki kontrolünden geçecek.
Set rsYetki = conn.execute("Select * from yetkiler where uyeID=" & uyeID & " and menuID=" & menuID & "")
Üyelerin sayfasında her üye için yetkiler bölümü var. Bir üyenin yetkilerini görmek için gör linkine tıklayıp bu sayfadan yetkiler sayfasına bağlanırız. Yetkiler sayfasına üyenin id'sini querystringten göndeririz. Yani gör linki yetkiler.asp?uyeID=1 gibi bir değerle yetkiler sayfasına gelir.
Şimdi yetkiler sayfasını inceleyelim.
yetkiler.asp
| iismail adlı kullanıcının yetkileri. | ||||
| Sıra | Menü Adı | Ekle | Düzelt | Sil |
| 1 | Haberler | |||
| 2 | Ziyaretçi Defteri | |||
| 3 | Ürünler | |||
| 4 | Duyurular | |||
| 5 | Resimler | |||
Bu sayfanın kodları şöyle olabilir.
<table width="400" border="1" cellspacing="0" cellpadding="5">
<tr>
<td colspan="5" bgcolor="#e5e5e5"><strong>iismail</strong> adlı kullanıcının yetkileri.</td>
</tr>
<form action="yetkilerSave.asp" method="post" name="frmYetki">
<tr>
<td width="68" bgcolor="#e5e5e5"><strong>Sıra</strong></td>
<td width="169" bgcolor="#e5e5e5"><strong>Menü Adı</strong></td>
<td width="31" bgcolor="#e5e5e5"><strong>Ekle</strong></td>
<td width="40" bgcolor="#e5e5e5"><strong>Düzelt</strong></td>
<td width="30" bgcolor="#e5e5e5"><strong>Sil</strong></td>
</tr>
<%
'ÜyeID'sini alıyoruz.
uyeID = request.QueryString("uyeID")
'Yetki vereceğimiz menüleri çağırıyoruz
Set rsMenu = conn.execute("Select * from menuler")
while not rsMenu.eof
menuID = rsMenu("menuID")
'Daha önce bu üyeye yetki verip vermediğimizi kontrol ediyoruz. Eğer verdiysek checkbox seçili gelsin diye işlem yapıyoruz.
Set rsYetki = conn.execute("Select * from yetkiler where uyeID=" & uyeID & " and menuID=" & menuID & "")
'Eğer yetki verilmediyse daha önce tüm yetkiler boş gelecek.
if rsYetki.eof then
'Buradaki değerler default ayarlarınız olabilir.
ekle = 0
duzelt = 0
sil = 0
else
'yetkileri alıyoruz Yetki değeri Eğer 1 ise yetki var anlamına gelecek.
ekle = rsYetki("ekle")
duzelt = rsYetki("duzelt")
sil = rsYetki("sil")
end if
Set rsYetki = nothing
'Aşağıda checkboxların isimlerini çok dikkat edin. her birinde menuID'yi ekliyoruz. işimiz daha kolay olsun diye
%>
<tr>
<td align="center"><%=rsMenu("sira")%></td>
<td> <%=rsMenu("menuAdi")%></td>
<td align="center"><input type="checkbox" name="ekle-<%=menuID%>" <%if ekle="1" then response.Write("checked=""checked""")%> value="1" /></td>
<td align="center"><input type="checkbox" name="duzelt-<%=menuID%>" <%if duzelt="1" then response.Write("checked=""checked""")%> value="1" /></td>
<td align="center"><input type="checkbox" name="sil-<%=menuID%>" <%if sil="1" then response.Write("checked=""checked""")%> value="1" /></td>
</tr>
<%rsMenu.movenext
wend
Set rsMenu = nothing%>
<tr>
<td colspan="5" align="center"><input name="uyeID" type="hidden" id="uyeID" value="<%=uyeID%>"> <input type="submit" name="button" id="button" value=" kaydet "></td>
</tr></form>
</table>
Şimdi yetkiSave.asp sayfasını yapalım.
'önce Üye id'sini alıyoruz.
uyeID = request.Form("uyeID")
'yetkiler tablosundaki bu üyeye ait tüm yetkileri kaldırıyoruz. Çünkü yeni yetkiler verdik.
conn.execute("Delete * from yetkiler where uyeID="& uyeID)
'sonra menuler tablosu kadar döngü kurup formdaki verileri çağırıyoruz.
Set rsMenu = conn.execute("Select * from menuler")
while not rsMenu.eof
menuID = rsMenu("menuID")
'Eğer checkbox seçili gelmezse değerin sıfır (0) olacağını belirtiyoruz.
ekle = request("ekle-"& menuID)
if ekle = "" then ekle = 0
duzelt = request("duzelt-"& menuID)
if duzelt = "" then duzelt = 0
sil = request("sil-"& menuID)
if sil = "" then sil = 0
'Şimdi değerleri aldık yetkiler tablosuna kayıtları ekliyoruz.
conn.execute("insert into yetkiler(uyeID,menuID,ekle,duzelt,sil) Values(" & uyeID & "," & menuID & "," & ekle & "," & duzelt & "," & sil & ")")
rsMenu.movenext
Wend
set rsMenu = nothing
'işlem tamam geri dönüşü yapıyoruz.
Yetkilendirme işlemi bu kadar.
Şimdi son olarak da yetki kontrol işlemini yapalım.
Diyelim ki bir haberler.asp sayfamız var. Üyemiz admin paneline girdiğinde biz onun uyeID'sini almışız.
haberler.asp sayfasına giren bir üye ilk olarak yetki kontrolünden geçecek.
Set rsYetki = conn.execute("Select * from yetkiler where uyeID=" & uyeID & " and menuID=" & menuID & "")
if rsYetki.eof then
'Eğer yetkili değilse üyeyi uyarı sayfasına gönderiyoruz.
else
ekle = rsYetki("ekle")
duzelt = rsYetki("duzelt")
sil = rsYetki("sil")
if ekle=1 or duzelt = 1 or sil=1 then
'Eğer 3 yetkiden biri varsa sayfayı görecek Değilse yine uyarı sayfasına gidecek.
else
'Eğer hiç yetkisi yoksa üyeyi uyarı sayfasına gönderiyoruz.
end if
end if
'Buraya geldiğine göre 3 yetkiden en az birinde yetkili bu üye.
Bundan sonrasında şöyle bir uygulama yapabiliriz.
Haberler sayfamızdaki butonları kontrol altına alırız. Bu Butonlar sayfamızda gerekli yerlerde kullanabilirsiniz.
<%if ekle="1" then %> <a href="#">Yeni Haber Ekle</a><%end if%>
<%if duzelt="1" then %> <a href="#">Düzelt</a><%end if%>
<%if sil="1" then %> <a href="#">Sil</a><%end if%>
Bu kadar bir kodla istediğiniz menüye istediğiniz kadar yetki verebilirsiniz. Hem yetki türlerini çoğaltabilirsiniz hem de menü sayısını çoğaltabilirsiniz. Böylece istediğiniz menüye istediğiniz üyeyi istediğiniz yetkili atayabilirsiniz.
Hiç yorum yok:
Yorum Gönder