• 05-12-2018, 22:11:40
    #1
    Üyeliği durduruldu
    Arkadaşlar php yetki sorunu yaşıyorum. Kullanıcının yetkisine göre sayfamda bazı butonları gösterip gizleme niyetim var. Googlede çok aradım ve bazı kodlar var. Ama herkes aynı şeyi yazmasına rağmen kod sistemi bende çalışmıyor.

    Siteme giren kullanıcılar için phpmyadminde yetki kolonu açtım. bazı kullanıcılara 0 ve bazı kullanıcılara 1 değerini atadım.
    Yani yetki kolonunda bazıları 0 bazıları ise 1

    Sonra internette herkesin yazdığı aşağıdaki kodu admin.php sayfasına koydum.

    <?php
    if($_SESSION['yetki'] == 0 ) {
    echo "yetkili erişim";
    } else {
    echo "yetkisiz erişim";

    }
    ?>

    Ancak kullanıcı login olurken, mysql tablosundaki yetki kolonunda 1 de yazsa 0 da yazsa yetkili erişim deniyor.

    Sizce bu sorunu nasıl çözebilirim.
    Teşekkürler.
  • 05-12-2018, 22:15:44
    #2
    Botman, Codemaster
    echo $_SESSION['yetki'];
    yapın. Çıktıda sorun var mı yok mu bir kontrol edin. Ek olarak bunu SESSION ile kontrol etmenizi önermem. Sonuç olarak yetki işleri genelde anlık müdahalelere ihtiyaç duyabiliyor. Bundan dolayı eğer yetkiyi db den çekiyorsanız fonksiyon yazın. Bu fonksiyonu sayfanın en üstüne yerleştirin. if else ile yönetin.

    // PHP seviyenizi tam olarak şuan bilmiyorum. Ondan dolayı şu sorulara cevap verirseniz daha net yardımcı olurum;

    1- Giriş esnasında kullanıcının veya vertabanında bulunan yetki verisini alıp SESSION'a verdin mi?
    2- Eğer vermişsen bunu yazdırman gerekir, eğer 1 veya 0 yazdırıyorsa şu kodu deneyebilirsin;
    if($_SESSION['yetki'] == "0") {
    
    echo "Yetki var";
    
    }
    else {
    echo "Yetki yok";
    }
  • 05-12-2018, 22:20:03
    #3
    Yetkili olup olmama durumunu veritabanından çekmenizi öneririm.
  • 05-12-2018, 22:20:15
    #4
    Üyeliği durduruldu
    HelixTm adlı üyeden alıntı: mesajı görüntüle
    echo $_SESSION['yetki'];
    yapın. Çıktıda sorun var mı yok mu bir kontrol edin. Ek olarak bunu SESSION ile kontrol etmenizi önermem. Sonuç olarak yetki işleri genelde anlık müdahalelere ihtiyaç duyabiliyor. Bundan dolayı eğer yetkiyi db den çekiyorsanız fonksiyon yazın. Bu fonksiyonu sayfanın en üstüne yerleştirin. if else ile yönetin.
    Hocam site çok basit bir yapıda. Öyle anlı bir müdahale gerektirecek bir şey yok.
    echo $_SESSION['yetki'];
    Burada acaba nasıl bir çıktı olması gerekiyor.
  • 05-12-2018, 22:23:38
    #5
    Botman, Codemaster
    byvector adlı üyeden alıntı: mesajı görüntüle
    Hocam site çok basit bir yapıda. Öyle anlı bir müdahale gerektirecek bir şey yok.
    echo $_SESSION['yetki'];
    Burada acaba nasıl bir çıktı olması gerekiyor.
    1 veya 0 değeri alması gerekir. En azından sizin işleminizden anladığım şey o. Eğer giriş sayfasında, sessıon a bir değer vermemişseniz, bu işlemi zaten yapamazsınız. Denemek için yapabileceğiniz en basit şey şu. Giriş sayfasının giriş onay kısmına yani, "girişiniz yapıldı" gibisinden mesaj verdiğiniz yerin hemen üstüne ;

    $_SESSION['yetki'] = "1";
    gibi bir kod koyun ve giriş yapın. Yüksek ihtimalle hata yapmazsanız yetkili olarak yani veri 1 olarak gelecektir.

    Bu veriyi veritabanından çekip otomatik olarak veritabanından gelen veriye verebilirsiniz ve oturum açılması zorunlu kıldığınız, session çalıştırdığınız tüm sayfalarda döndürür.
  • 05-12-2018, 22:24:48
    #6
    $_SESSION['yetki']
    Bu session ı nerde tanımlıyorsunuz acaba?
  • 05-12-2018, 22:26:37
    #7
    Normal şartlarda 0-1 durumları şu şekilde kullanılır;

    0 = false,
    1 = true

    Burada ters kullanılmış gibi görüyor. Yani 0 yetkisiz, yetkilinin 1 olması gerekiyor. Eğer ters kullanımda bir sıkıntı yok biz 0'ı yetkili olarak kullanıyoruz diyorsanız kullanıcının girişi başarılı olduktan sonra veritabanındaki yetki değeri herhangi bir session'a atılmıyor olabilir.

    Örnek;
    session_start();
    
    // Başarılı girişten sonra yapılan işlemler
    $_SESSION['yetki'] = $kullanici['yetki']; // Veritabanındaki yetki değeri
    Ayrıca session_start(); kullanmadığınız sürece session içindeki değerlere erişemezsiniz. Kontrol ettirmeye çalıştığınız php dosyasının başına session_start(); değerini yazın.
  • 05-12-2018, 22:27:13
    #8
    Üyeliği durduruldu
    HelixTm adlı üyeden alıntı: mesajı görüntüle
    echo $_SESSION['yetki'];
    yapın. Çıktıda sorun var mı yok mu bir kontrol edin. Ek olarak bunu SESSION ile kontrol etmenizi önermem. Sonuç olarak yetki işleri genelde anlık müdahalelere ihtiyaç duyabiliyor. Bundan dolayı eğer yetkiyi db den çekiyorsanız fonksiyon yazın. Bu fonksiyonu sayfanın en üstüne yerleştirin. if else ile yönetin.

    // PHP seviyenizi tam olarak şuan bilmiyorum. Ondan dolayı şu sorulara cevap verirseniz daha net yardımcı olurum;

    1- Giriş esnasında kullanıcının veya vertabanında bulunan yetki verisini alıp SESSION'a verdin mi?
    2- Eğer vermişsen bunu yazdırman gerekir, eğer 1 veya 0 yazdırıyorsa şu kodu deneyebilirsin;
    if($_SESSION['yetki'] == "0") {
    
    echo "Yetki var";
    
    }
    else {
    echo "Yetki yok";
    }
    Hocam PHP bilgim henüz başlangıç seviyesinde bile değil. Burada tam olarak ne demek istediniz.

    1- Giriş esnasında kullanıcının veya veri tabanında bulunan yetki verisini alıp SESSION'a verdin mi?

    Burada kastettiğiniz şey login.php sayfasına şu kodumu eklemem gerekiyor.
    $yetki = $_POST['yetki'];
  • 05-12-2018, 22:38:07
    #9
    Botman, Codemaster
    byvector adlı üyeden alıntı: mesajı görüntüle
    Hocam PHP bilgim henüz başlangıç seviyesinde bile değil. Burada tam olarak ne demek istediniz.

    1- Giriş esnasında kullanıcının veya veri tabanında bulunan yetki verisini alıp SESSION'a verdin mi?

    Burada kastettiğiniz şey login.php sayfasına şu kodumu eklemem gerekiyor.
    $yetki = $_POST['yetki'];
    Öncelikle veritabanından giriş yapan kullanıcının bilgilerini çekmen gerekiyor. Giriş kısmında kullanıcının kullanıcı adı ve şifresi geliyordur. Bununla sorgu yapacaksın. Sorgu konunu yazıyorum fakat tablo kısımlarını ve değişkenleri değiştirmen gerek.

    /// uyeler_tablon -> Üyeler tablonun adını gir
    // prepare -> sorgudaki = kullanici_adi kısmı // veritabanındaki kullanıcı adı sütunu
    // aynı şekilde sifre kısmı veritabanındaki sifre kısmı // MD5 kullanıyorsan değişkenleri MD5 e göre göndermen gerek.
    // SESSION kısmında $veri['yetki']; kısmına eşitledim.  // veri değişkeninin içindeki "yetki" kısmı veritabanındaki kullanıcının yetkisinin ayarlanacağı sütunun ismi. bunu da kendine göre düzenlemen gerek.
    $veri_cek = $db -> prepare("select * from uyeler_tablon where kullanici_adi = :kullanici_adi and sifre = :sifre");
    $cikti = $veri_cek -> execute(array(
    "kullanici_adi" => $kullanici_adinin_geldigi_degisken,
    "sifre" => $sifrenin_geldigi_degisken
    ));
    $veri = $cikti -> fetch(PDO::FETCH_ASSOC);
    
    $_SESSION['yetki'] = $veri['yetki'];
    Eğer hala yapamadıysan nusret7052 skype ekle yardımcı olayım.