v2.5.2
Giriş yap

Yetki Sistemi

samkofte
1,034 defa görüntülendi

Tek panel kullanarak giren kişinin yetkisini kontrol edip get değeri gönderiyorum fakat boş geldiğin de falan menüler gözükmüyor doğal olarak bu işlemi her dosya da tek tek kontrol mü ettirmem lazım veya her dosyadan get değeri mi göndermem lazım

ilkrkaya
1868 gün önce

Merhaba,
Kendi izlemiş olduğum yolu anlatmak isterim. Gayet basit bir yol bana göre.
Öncelikle veri tabanında bir alan oluşturuyorsun. Örnek olarak;

user_authorization
id | data
-- | --
1 | sayfa_adi1, sayfa_adi2

Tarzında bir tablo oluşturduğumuzu farz edelim. Tabii bu kadar ile kalmayacak. User tablonun içerisinde de user_authorization_id diye bir alan koyup user_authorization tablosu ile ilişkilendirmelisin.

Sonrasında bir fonksiyon yazarak bunu bütün sayfalara koymalısın.
_Not: sayfa_adi1, sayfaadi2 alanları site.com/getPar kalın olarak işaretlenen alanı belirtmektedir.

<?php
    
    function authorization($user_id, $url){
    	global $db;
    	
    	$query -> $db->query("SELECT * FROM user INNER JOIN user_authorization ON user_authorization.id = user.user_authorization_id WHERE user.user_id = ?");
    	$query->execute([$user_id]);
    	$query = $query->fetch(PDO::FETCH_ASSOC);
    	
    	$data = explode(", ", $query['data']);
    	if( in_array($url, $data) ){
    		return true;
    	}else {
    		die("Yetkisiz Erişim!"); 
    	}
    }
    

Oluşturulan bu fonksiyonu tüm sayfalarında çağırdığın header.php veya senin sisteminde ne ise onun en başına(tabi öncesinde vt bağlantısı ve fonksiyonları çağırıp) koyup authorization($_SESSION['user_id'], $_GET['par']); şeklinde çalıştıtırsan istediğine ulaşabileceğine inanıyorum.

Not: Kodları biraz da olsa baştan savma yazdım. Lütfen kullanmadan önce güvenlik kontrolünden geçir.