• 07-10-2018, 19:09:28
    #1
    Merhaba arkadaşlar
    bir çok çeşit denedim fakat beceremedim
    istediğim şeyi şu şekilde anlatayım.
    yonetici 
    id ==============>1 2 3
    kadi =============>admin demo editor
    sifre =============>12345 demo editor
    yetkiid=============>1 2 3
    ------------------
    yonetici_izin
    id===================>1          2          3
    adınız================>Adınız    Democu    editor
    resimyukle=============>0          1          1		
    videoyukle =============>0          1		1
    haberler===============>0          1		0
    projeler1===============>0         1		0
    bu tablolara göre
    admin giriş yaptığı zaman " resimyukle-videoyukle-haberler-projeler" sayfalarına erişim sağlayabilir
    demo giriş yaptığı zaman bu sayfalara erişim sağlayamaz
    editor giriş yaptığı zaman belirlenen sayfalara erişim sağlayabilir.
    0 = aktif
    1 = pasif anlamına geliyor.


    Bu şekilde örneek bir çalışma da yardımcı olabilecek arkadaşlar mevcutmudur acaba

    Şimdiden teşekkürler.
  • 07-10-2018, 20:45:52
    #2
    tablolar
    users
    id	username	password	group
    1	test1		xxxx		1,2,3,4
    2	test2		xxxx		1,2,4
    3	test3		xxxx		1
    
    permissions
    pid		pname
    1		panel
    2		edit
    3		delete
    4		upload
    Sayfanın başında veya index.php üzerinde dönüyorsa orada biryerlerde izinleri önceden çekin.

    index.php
    $perms = query("select * from permissions");
    
    while ($perm = fetch_array($perms)){
    
    $_SESSION['permissons'][$perm['pname']] = $perm['pid'];
    }
    uyegiris.php
    $uye = query("select * from users  where username = 'test1'");
    
    fetch_array vs....
    
    $_SESSION['login'] = true;
    $_SESSION['user']['username'] = $uye['username'];
    $_SESSION['user']['group'] = explode(',', $uye['group_perm']);
    upload.php
    if(in_array($_SESSION['permissions']['upload'], $_SESSION['user']['group'])){
    	göster.
    }else{
    	hata ver.
    }
    duznele.php
    if(in_array($_SESSION['permissions']['edit'], $_SESSION['user']['group'])){
    	göster.
    }else{
    	hata ver.
    }
    Eğer group olarak izinleri ayarlamak istiyorsanız 3. bir tablo oluşturun. users tablosunda grouplar yerine groupid tutar sorguyla bu tablodan groupları çekersiniz.
    perm_group
    groupid	groupname	perms
    1	admin		1,2,3,4
    2	editor		1,2,3
    3	demo		1
    4	uye		1,2
    Çok karışık olmamıştır umarım, kısaca buna benzer bir yapı oluşturabilirsiniz.
  • 07-10-2018, 21:23:45
    #3
    ilgin için teşekkürler kardeşim

    elinde örnek uygulama varsa iletme şansın olabilirmi
    örnek uygulama üzerinden daha kolay yapabileceğim sanırım.
  • 18-10-2018, 23:53:50
    #4
    ob_start();
    session_start();
    
    include("baglan.php");
    include("fonksiyonlar.php");
    
    $kullanici = $_POST['kullanici'];
    $sifre = $_POST['sifre'];
    
    
    $uye = $db->query("select * from user where kullanici='".$kullanici."' AND sifre='".$sifre."' "); 
    	if($uye->num_rows > 0){
    		$_SESSION['login'] = true; 
    		$_SESSION['user']['kullanici'] = $uye['kullanici']; 
    		$_SESSION['user']['yetkiler'] = explode(',', $uye['yetkiler_perm']); 
    	
    
        header("Location:panel.php");
    	
    }
    uyegiris.php bu şekilde yaptım fakat
    $_SESSION['user']['kullanici'] = $uye['kullanici'];
    $_SESSION['user']['yetkiler'] = explode(',', $uye['yetkiler_perm']);
    bu kısımda hata olduğunu söylüyor pek anlamadım
    baglan.php
    define('DB_HOST', 'localhost'); 
    define('DB_USERNAME', 'root'); 
    define('DB_PASSWORD', ''); 
    define('DATABASE', 'yetkiver');   
    
    $db = new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DATABASE); 
    $db->set_charset('utf8');
    
    if($db->connect_errno > 0){ 
    die('Veritabanı bağlantısı sağlanamadı.<b>'.$db->connect_error.' </b>'); 
    }
    oda bu şekilde
    index.php
    ob_start();
    session_start();
    
    if(@$_SESSION["login"] == "true" && @$_SESSION["user"] != ""){
    	header("Location: panel.php");
    }
    ?>
    
                        <form action="uyegiris.php" method="post">
                            <div class="form-group">
                                <input name="kullanici" type="text" class="form-control underline-input" placeholder="Kullanıcı Adı">
                            </div>
                            <div class="form-group">
                                <input name="sifre" type="password" placeholder="Şifre" class="form-control underline-input">
                            </div>
                            <div class="form-group text-left mt-20">
    							<button type="submit" class="btn btn-greensea b-0 br-2 mr-5">Giriş Yap</button>
    
                                <label class="checkbox checkbox-custom-alt checkbox-custom-sm inline-block">
                                    <input type="checkbox"><i></i> Beni Hatırla
                                </label>
                                <a href="forgotpass.html" class="pull-right mt-10">Şifremi Unuttum?</a>
                            </div>
                        </form>
  • 29-10-2020, 22:26:04
    #5
    hocam sorunu halledebildiniz mi acaba?
  • 10-11-2020, 23:34:03
    #6
    yok bayadır ilgilenmeyi bıraktım ama güncel kalabilir konu işine yarayan arkadaşlar illaki çıkar.
  • 12-11-2020, 22:07:35
    #7
    Hocam şu konuyu incelerseniz tam aradığınız yapıdır ayrıca daha dinamik;
    https://www.sitepoint.com/role-based...ontrol-in-php/