• 22-05-2023, 14:55:41
    #10
    BartuC39 adlı üyeden alıntı: mesajı görüntüle
    Bu olmaz, konuya eklediğim resimdeki yetkiler tablosuna uygun olması gerek.

    if($permsx["role"]!="administrator"){ şeklinde değil if(!isset($perms['ayar'])){ şeklinde olmalı, ayar yazan yerde veritabanı tablosunda perms'in içinde yazan veri yazılmalı.
    temsili olarak yazdım ufak değişiklikler ile yapabilirsiniz
  • 23-05-2023, 13:26:43
    #11
    BartuC39 adlı üyeden alıntı: mesajı görüntüle
    Herkese merhaba, php ile yetki sitemi yapmak istiyorum.

    Üyeler ve yetkiler diye ayrı 2 tablo var, üyeler tablosundaki "yetki" ile yetkiler tablosundaki "id"yi eşitlemem gerek.

    if(!isset($perms['ayar'])){
        die("<script type='text/javascript'>alert('Maalesef giriş için yeterli yetkiye sahip değilsiniz.');</script>");
    }
    şeklinde bir kodu bazı php sayfalarında kullanmak istiyorum.

    $permTableQuery = $db->prepare("SELECT * FROM yetkiler");
    $permsTable = $permTableQuery->execute();
    $permsTable = $permTableQuery->fetch(PDO::FETCH_ASSOC);
    
    $permsQuery = $db->prepare("SELECT * FROM uyeler WHERE yetki = :yetki");
    $perms = $permsQuery->execute(array(":yetki"=>$permsTable("id")));
    $perms = $permsQuery->fetch(PDO::FETCH_ASSOC);
    şöyle bir kod yazayım dedim ama yarım kaldı, ne yapacağımı bilemedim.

    Yetkiler tablosu:


    Yardım ederseniz sevinirim, şimdiden teşekkürler.

    PHP, PDO'ya uygun olacak şekilde kod lazım ve üstteki resimdeki tabloya uyumlu olmalı kod.
    Yani if(!isset($perms['ayar'])){ kodunun kullanılması gerek, kodda 'ayar' yazan yetkiler tablosundaki perms'te yazan 'ayar' olmalı.
    Yani eğer php koduna if(!isset($perms['magaza'])){ yazarsam şunu kast etmiş olmam gerek;
    Basit bir fonksiyon oluşturun. Bu fonksiyon userId ve sayfanın permini alsın. örnek: "magaza". Fonksiyon içinde pdo ile JOIN kullanıp 2 tabloda ki verileri birlikte alın. Daha sonra array_search ile perms içinde sayfanın permini aratıp ona göre true veya false döndürün.
    Bu en basit halidir. Geliştirip detaylandırmak size kalmış tabi ancak aradığınız asıl şey sanırım JOIN sorgusu. JOIN sorgusunu araştırmanızı önerebilirim