• 14-06-2023, 16:45:43
    #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. Bu komut sayesinde yetkiler tablosundaki perms'teki "ayar" verisini tespit etmesi ve "Maalesef giriş için yeterli yetkiye sahip değilsiniz. " uyarısını vermemesi gerek.
    Eğer perms'in içinde "ayar" yok ise de "Maalesef giriş için yeterli yetkiye sahip değilsiniz. " uyarısını vermesi gerek.

    $permsx = veriCekSQL("SELECT * FROM yetkiler WHERE id = '".$user["yetki"]."'")->fetch();
    $permss = json_decode($permsx["perms"], JSON_PRETTY_PRINT);
    echo json_encode($permss, JSON_PRETTY_PRINT);
    şöyle bir şey denedim.


    Verileri bu şekilde gösteriyor, echo json_encode($permss, JSON_PRETTY_PRINT); yazan yerdeki echo'yu silip yerine $perms = yazınca, ilgili sayfada "Maalesef giriş için yeterli yetkiye sahip değilsiniz." şeklindeki yazı halen görünüyor.

    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;
  • 14-06-2023, 16:59:02
    #2
    $arr = ["duyuru","magaza","oyuncu","destek","ayar"];
    if(array_search("magaza",$arr)) {
      echo "Kullanıcı mağaza izni almış";
    }

    Ayrıca ;
    http://www.baskent.edu.tr/~gmemis/courses/introductiontodatabase/Db10.pdf
    https://www.sitepoint.com/role-based-access-control-in-php/

    Kaynakları okumanı tavsiye ederim
  • 14-06-2023, 17:06:53
    #3
    if(!isset($perms['ayar'])){
    die("<script type='text/javascript'>alert('Maalesef giriş için yeterli yetkiye sahip değilsiniz.');</script>");
    }

    //Yukardaki değişkende Tek "s" var aşağıda tanımladığınız değişkende 2 adet s var.

    $permsx = veriCekSQL("SELECT * FROM yetkiler WHERE id = '".$user["yetki"]."'")->fetch();
    $permss = json_decode($permsx["perms"], JSON_PRETTY_PRINT);

    //Decode işleminde 2. parametre true olmalı diye biliyorum JSON_PRETTY_PRINT okunabilirliği arttırıyor.


    Şu şekilde kullanabilirsiniz.
    <?php
    $json = veriCekSQL("SELECT perms FROM yetkiler WHERE id = '".$user["yetki"]."'")->fetch();
    $UsersPerm = json_decode($json, true);
    $PagePerm = "magaza";
    if (!in_array($PagePerm, $UsersPerm)) {
        die("<script type='text/javascript'>alert('Maalesef giriş için yeterli yetkiye sahip değilsiniz.');</script>");
    }
  • 15-06-2023, 10:30:00
    #4
    Sefaakcihan adlı üyeden alıntı: mesajı görüntüle
    Şu şekilde kullanabilirsiniz.
    <?php
    $json = veriCekSQL("SELECT perms FROM yetkiler WHERE id = '".$user["yetki"]."'")->fetch();
    $UsersPerm = json_decode($json, true);
    $PagePerm = "magaza";
    if (!in_array($PagePerm, $UsersPerm)) {
        die("<script type='text/javascript'>alert('Maalesef giriş için yeterli yetkiye sahip değilsiniz.');</script>");
    }
    Teşekkürler.