• 22-05-2023, 14:38:03
    #1
    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;
  • 22-05-2023, 14:39:37
    #2
    Bkz user role
    İf user role admin ..
    Else
    Else
    Else
  • 22-05-2023, 14:42:49
    #3
    https://github.com/alexshelkov/SimpleAcl

    Buna benzer oldukça fazla kütüphane var, doğrudan kullanabilirsiniz ya da esinlenerek kendinizinkini yazabilirsiniz.
  • 22-05-2023, 14:45:42
    #4
    Chatgpt;

    PHP scriptinize kullanıcı yetkilerini eklemek için aşağıdaki adımları takip edebilirsiniz:

    1. Kullanıcıların yetkilerini temsil eden bir tablo oluşturun. Bu tablo, kullanıcı adı, şifre ve yetki seviyesi gibi alanları içerebilir. Yetki seviyeleri için, örneğin "admin", "moderator", "uye" gibi değerler kullanabilirsiniz.

    2. Kullanıcıların giriş yapabildiği bir giriş sayfası oluşturun. Kullanıcı burada kullanıcı adı ve şifresini girecek. Giriş işlemi gerçekleştiğinde, kullanıcının yetki seviyesini kontrol edin ve oturum verilerine kullanıcının yetki seviyesini kaydedin.

    3. Scriptinizin farklı bölümlerinde, kullanıcının yetki seviyesini kontrol ederek işlem yapmasını sağlayın. Örneğin, admin yetkisine sahip kullanıcılar sadece admin paneline erişebilirken, moderator yetkisine sahip kullanıcılar belirli moderasyon işlemlerini yapabilir.

    4. Kullanıcının yetki seviyesini kontrol etmek için bir işlev oluşturun. Bu işlev, kullanıcının oturum verilerinden yetki seviyesini alacak ve kullanıcının istenen işlemi gerçekleştirip gerçekleştiremeyeceğini kontrol edecektir. Eğer kullanıcının yetkisi yoksa, işlemi gerçekleştirmesine izin verilmeyecektir.

    Örnek bir işlev:

    ```php
    function kullaniciYetkiKontrolu($gerekenYetkiSeviyesi) {
    // Kullanıcının yetki seviyesini oturum verilerinden alın
    $kullaniciYetkiSeviyesi = $_SESSION['yetkiSeviyesi'];

    // Gereken yetki seviyesi, kullanıcının yetki seviyesinden daha büyük veya eşitse işleme devam et
    if ($kullaniciYetkiSeviyesi >= $gerekenYetkiSeviyesi) {
    return true;
    } else {
    return false;
    }
    }
    ```

    Bu işlevi kullanarak, scriptinizin farklı yerlerinde yetki kontrollerini yapabilirsiniz. Örneğin:

    ```php
    if (kullaniciYetkiKontrolu('admin')) {
    // Admin yetkisi gerektiren işlemler burada gerçekleştirilir
    } else {
    // Kullanıcı yetkisi yetersiz olduğu için işlem yapılamaz
    }
    ```

    Bu şekilde, kullanıcının yetkisi olan yerlerde işlem yapabilmesini sağlayabilirsiniz.
  • 22-05-2023, 14:46:13
    #5
    fatihemre adlı üyeden alıntı: mesajı görüntüle
    https://github.com/alexshelkov/SimpleAcl

    Buna benzer oldukça fazla kütüphane var, doğrudan kullanabilirsiniz ya da esinlenerek kendinizinkini yazabilirsiniz.
    Bu benim işime yaramaz maalasef, php pdo kullanıyorum. Konuda verdiğime benzer php kodu lazım.
    Attığınız işe yarıyorsa bile benim o şeklideki php'de bir bilgim yok.
  • 22-05-2023, 14:47:47
    #6
    Misafir adlı üyeden alıntı: mesajı görüntüle
    Chatgpt;

    PHP scriptinize kullanıcı yetkilerini eklemek için aşağıdaki adımları takip edebilirsiniz:

    1. Kullanıcıların yetkilerini temsil eden bir tablo oluşturun. Bu tablo, kullanıcı adı, şifre ve yetki seviyesi gibi alanları içerebilir. Yetki seviyeleri için, örneğin "admin", "moderator", "uye" gibi değerler kullanabilirsiniz.

    2. Kullanıcıların giriş yapabildiği bir giriş sayfası oluşturun. Kullanıcı burada kullanıcı adı ve şifresini girecek. Giriş işlemi gerçekleştiğinde, kullanıcının yetki seviyesini kontrol edin ve oturum verilerine kullanıcının yetki seviyesini kaydedin.

    3. Scriptinizin farklı bölümlerinde, kullanıcının yetki seviyesini kontrol ederek işlem yapmasını sağlayın. Örneğin, admin yetkisine sahip kullanıcılar sadece admin paneline erişebilirken, moderator yetkisine sahip kullanıcılar belirli moderasyon işlemlerini yapabilir.

    4. Kullanıcının yetki seviyesini kontrol etmek için bir işlev oluşturun. Bu işlev, kullanıcının oturum verilerinden yetki seviyesini alacak ve kullanıcının istenen işlemi gerçekleştirip gerçekleştiremeyeceğini kontrol edecektir. Eğer kullanıcının yetkisi yoksa, işlemi gerçekleştirmesine izin verilmeyecektir.

    Örnek bir işlev:

    ```php
    function kullaniciYetkiKontrolu($gerekenYetkiSeviyesi) {
    // Kullanıcının yetki seviyesini oturum verilerinden alın
    $kullaniciYetkiSeviyesi = $_SESSION['yetkiSeviyesi'];

    // Gereken yetki seviyesi, kullanıcının yetki seviyesinden daha büyük veya eşitse işleme devam et
    if ($kullaniciYetkiSeviyesi >= $gerekenYetkiSeviyesi) {
    return true;
    } else {
    return false;
    }
    }
    ```

    Bu işlevi kullanarak, scriptinizin farklı yerlerinde yetki kontrollerini yapabilirsiniz. Örneğin:

    ```php
    if (kullaniciYetkiKontrolu('admin')) {
    // Admin yetkisi gerektiren işlemler burada gerçekleştirilir
    } else {
    // Kullanıcı yetkisi yetersiz olduğu için işlem yapılamaz
    }
    ```

    Bu şekilde, kullanıcının yetkisi olan yerlerde işlem yapabilmesini sağlayabilirsiniz.
    ChatGPT'den bulduğunuz kodu atmasaydınız keşke. Bana konuda verdiğim tip kod lazım.
  • 22-05-2023, 14:48:02
    #7
    $permQuery = $db->prepare("SELECT * FROM uyeler where id=:id LIMIT 1");
    $perms = $permQuery->execute(array(":id"=>$_SESSION['kullanici']['id'])); /*BURASI YANLIŞ BİLİYORUM*/
    $perms = $permQuery->fetch(PDO::FETCH_ASSOC);
    
    $permQueryx= $db->prepare("SELECT * FROM yetki where usid=:usid  LIMIT 1");
    $permsx = $permQueryx->execute(array(":usid "=>$perms['id']));
    $permsx = $permQueryx->fetch(PDO::FETCH_ASSOC);
    
    if($permsx["role"]!="administrator"){
        die("<script type='text/javascript'>alert('Maalesef giriş için yeterli yetkiye sahip değilsiniz.');</script>");
    }
  • 22-05-2023, 14:48:29
    #8
    Şifreyi doğru giren üyeye session atayarak. Şifresi ve k.adı doğru üyenin yetkisi veritabanından kontrol edilir. Uygun role atanıp izinler verilir.
  • 22-05-2023, 14:55:01
    #9
    OneGui adlı üyeden alıntı: mesajı görüntüle
    $permQuery = $db->prepare("SELECT * FROM uyeler where id=:id LIMIT 1");
    $perms = $permQuery->execute(array(":id"=>$_SESSION['kullanici']['id'])); /*BURASI YANLIŞ BİLİYORUM*/
    $perms = $permQuery->fetch(PDO::FETCH_ASSOC);
    
    $permQueryx= $db->prepare("SELECT * FROM yetki where usid=:usid  LIMIT 1");
    $permsx = $permQueryx->execute(array(":usid "=>$perms['id']));
    $permsx = $permQueryx->fetch(PDO::FETCH_ASSOC);
    
    if($permsx["role"]!="administrator"){
        die("<script type='text/javascript'>alert('Maalesef giriş için yeterli yetkiye sahip değilsiniz.');</script>");
    }
    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ı.