Yöneticilerin giriş yapabileceği sayfa nasıl yapılır?

Arsen Lüpen

Hectopat
Katılım
28 Şubat 2021
Mesajlar
80
Daha fazla  
Cinsiyet
Erkek
Merhaba. Ben yaptığım web sitesinde çalışanların girip kullanabileceği bir arayüz ve yöneticlerin girip kullanabileceği ayrı iki yönetim sayfası yapmak istiyorum. Tek bir login butonundan kullanıcının rolü yönetici ise yönetici sayfasına çalışan ise çalışan sayfasına göndermek istiyorum. Yardımcı olabilir misiniz?
 

Dosya Ekleri

  • Ekran Görüntüsü (35).png
    Ekran Görüntüsü (35).png
    178,9 KB · Görüntüleme: 66
Direkt == admin olarak ayarlarsanız çok kolay SQL Injection yersiniz.

Güvenliği arttırın.

Sorunuza gelirsek veri tabanı üzerinde yer alan bir kullanıcı rolü durumu olması lazım. Duruma göre ilgili sayfaya erişim izni vermeniz gerkiyor.
 
Eğer çalışan ve admin üyeleri aynı tabloya ekliyorsanız okey ama pek mantıklı gelmiyor bu şekilde bilginiz olsun.
@Eray T hocamın dediği gibi bu ve önceki kodlarında da çok önemli güvenlik açıkları var. Ben sana yine çalışan haliyle yazayım gerisi sana kalsın :)

tablonda user_role 1 ise admi 0 ise çalışan buna göre düzenleyebilirsin.
PHP:
if(isset($_POST['login'])) {

    $user_name = $_POST['user_name'];
    $user_mail = $_POST['user_mail'];
    $user_password = $_POST['user_password'];

    $q  = $db->query("SELECT * FROM admins WHERE user_name='$user_name' && user_mail='$user_mail' && user_password='$user_password' && user_role=1",PDO::FETCH_ASSOC);
    $admin = $q -> rowCount();
   
    $qq  = $db->query("SELECT * FROM admins WHERE user_name='$user_name' && user_mail='$user_mail' && user_password='$user_password' && user_role=0",PDO::FETCH_ASSOC);
    $calisan = $qq -> rowCount();
   
    if( $admin > 0 ){
        $sorgu = $db->prepare("SELECT * FROM admins WHERE user_name = ?");
        $sorgu->bindParam(1, $user_name, PDO::PARAM_STR);
        $sorgu->execute();
        $cikti = $sorgu->fetch(PDO::FETCH_ASSOC);

        $_SESSION['adminoturumu']=true;
        $_SESSION['user_name']=$cikti['user_name'];
        $_SESSION['user_mail']=$cikti['user_mail'];
        $_SESSION['user_role']=$cikti['user_role'];
       
        header( "Refresh:2;url=admin_sayfasi.php" );
        echo 'Admin girişi yapıldı yönlendiriliyorsunuz...';
    } elseif( $calisan > 0) {
        $sorgu = $db->prepare("SELECT * FROM admins WHERE user_name = ?");
        $sorgu->bindParam(1, $user_name, PDO::PARAM_STR);
        $sorgu->execute();
        $cikti = $sorgu->fetch(PDO::FETCH_ASSOC);

        $_SESSION['calisanoturumu']=true;
        $_SESSION['user_name']=$cikti['user_name'];
        $_SESSION['user_mail']=$cikti['user_mail'];
        $_SESSION['user_role']=$cikti['user_role'];
       
        header( "Refresh:2;url=calisan_sayfasi.php" );
        echo 'Çalışan girişi yapıldı yönlendiriliyorsunuz...';
    } else {
        header( "Refresh:2;url=giris_sayfasi.php" );
        echo 'Bilgileriniz hatalı...';
    }

}

Yanlış olabilir aceleyle yazdım kontrol et bi çalışmıyorsa tekrar bakalım. Maça yetişiyorum da :)
 
Direkt == admin olarak ayarlarsanız çok kolay SQL ınjection yersiniz.

Güvenliği arttırın.

Sorunuza gelirsek veri tabanı üzerinde yer alan bir kullanıcı rolü durumu olması lazım. Duruma göre ilgili sayfaya erişim izni vermeniz gerkiyor.

Vallahi PHP de çok yeniyim daha 1 2 ay oldu. Güvenlik kısmını yeni yeni öğreniyorum.

Eğer çalışan ve admin üyeleri aynı tabloya ekliyorsanız okey ama pek mantıklı gelmiyor bu şekilde bilginiz olsun.
@Eray T hocamın dediği gibi bu ve önceki kodlarında da çok önemli güvenlik açıkları var. Ben sana yine çalışan haliyle yazayım gerisi sana kalsın :)

Tablonda user_role 1 ise admi 0 ise çalışan buna göre düzenleyebilirsin.
PHP:
if(isset($_POST['login'])) {

 $user_name = $_POST['user_name'];
 $user_mail = $_POST['user_mail'];
 $user_password = $_POST['user_password'];

 $q = $db->query("SELECT * FROM admins WHERE user_name='$user_name' && user_mail='$user_mail' && user_password='$user_password' && user_role=1",PDO::FETCH_ASSOC);
 $admin = $q -> rowCount();

 $qq = $db->query("SELECT * FROM admins WHERE user_name='$user_name' && user_mail='$user_mail' && user_password='$user_password' && user_role=0",PDO::FETCH_ASSOC);
 $calisan = $qq -> rowCount();

 if( $admin > 0 ){
 $sorgu = $db->prepare("SELECT * FROM admins WHERE user_name = ?");
 $sorgu->bindParam(1, $user_name, PDO::PARAM_STR);
 $sorgu->execute();
 $cikti = $sorgu->fetch(PDO::FETCH_ASSOC);

 $_SESSION['adminoturumu']=true;
 $_SESSION['user_name']=$cikti['user_name'];
 $_SESSION['user_mail']=$cikti['user_mail'];
 $_SESSION['user_role']=$cikti['user_role'];

 header( "Refresh:2;url=admin_sayfasi.php" );
 echo 'Admin girişi yapıldı yönlendiriliyorsunuz...';
 } elseif( $calisan > 0) {
 $sorgu = $db->prepare("SELECT * FROM admins WHERE user_name = ?");
 $sorgu->bindParam(1, $user_name, PDO::PARAM_STR);
 $sorgu->execute();
 $cikti = $sorgu->fetch(PDO::FETCH_ASSOC);

 $_SESSION['calisanoturumu']=true;
 $_SESSION['user_name']=$cikti['user_name'];
 $_SESSION['user_mail']=$cikti['user_mail'];
 $_SESSION['user_role']=$cikti['user_role'];

 header( "Refresh:2;url=calisan_sayfasi.php" );
 echo 'Çalışan girişi yapıldı yönlendiriliyorsunuz...';
 } else {
 header( "Refresh:2;url=giris_sayfasi.php" );
 echo 'Bilgileriniz hatalı...';
 }

}

Yanlış olabilir aceleyle yazdım kontrol et bir çalışmıyorsa tekrar bakalım. Maça yetişiyorum da :)

O zaman rol oluşturmadan, iki ayrı tablo oluşturup ikisi içinde giriş işlemi yapmam lazım değil mi? Mantıklı değil dediniz ya.

Peki ben güncel olarak phpyi nasıl öğrenebilirim? Yani ilk başta youtubedan video izliyordum ama videolar çok eskiydi en yenileri 1 2 yıllıktı. Udemyden ders aldım ordan devam ettim sonra. 2023 yılında yenilenen bir dersti günceldi yani. Şimdi bakıyorum şu yaptıklarınıza benim öğrendiklerimden çok farklı. Bir de diyorsunuz güvenlik açıkları var diye.

Eğer çalışan ve admin üyeleri aynı tabloya ekliyorsanız okey ama pek mantıklı gelmiyor bu şekilde bilginiz olsun.
@Eray T hocamın dediği gibi bu ve önceki kodlarında da çok önemli güvenlik açıkları var. Ben sana yine çalışan haliyle yazayım gerisi sana kalsın :)

Tablonda user_role 1 ise admi 0 ise çalışan buna göre düzenleyebilirsin.
PHP:
if(isset($_POST['login'])) {

 $user_name = $_POST['user_name'];
 $user_mail = $_POST['user_mail'];
 $user_password = $_POST['user_password'];

 $q = $db->query("SELECT * FROM admins WHERE user_name='$user_name' && user_mail='$user_mail' && user_password='$user_password' && user_role=1",PDO::FETCH_ASSOC);
 $admin = $q -> rowCount();

 $qq = $db->query("SELECT * FROM admins WHERE user_name='$user_name' && user_mail='$user_mail' && user_password='$user_password' && user_role=0",PDO::FETCH_ASSOC);
 $calisan = $qq -> rowCount();

 if( $admin > 0 ){
 $sorgu = $db->prepare("SELECT * FROM admins WHERE user_name = ?");
 $sorgu->bindParam(1, $user_name, PDO::PARAM_STR);
 $sorgu->execute();
 $cikti = $sorgu->fetch(PDO::FETCH_ASSOC);

 $_SESSION['adminoturumu']=true;
 $_SESSION['user_name']=$cikti['user_name'];
 $_SESSION['user_mail']=$cikti['user_mail'];
 $_SESSION['user_role']=$cikti['user_role'];

 header( "Refresh:2;url=admin_sayfasi.php" );
 echo 'Admin girişi yapıldı yönlendiriliyorsunuz...';
 } elseif( $calisan > 0) {
 $sorgu = $db->prepare("SELECT * FROM admins WHERE user_name = ?");
 $sorgu->bindParam(1, $user_name, PDO::PARAM_STR);
 $sorgu->execute();
 $cikti = $sorgu->fetch(PDO::FETCH_ASSOC);

 $_SESSION['calisanoturumu']=true;
 $_SESSION['user_name']=$cikti['user_name'];
 $_SESSION['user_mail']=$cikti['user_mail'];
 $_SESSION['user_role']=$cikti['user_role'];

 header( "Refresh:2;url=calisan_sayfasi.php" );
 echo 'Çalışan girişi yapıldı yönlendiriliyorsunuz...';
 } else {
 header( "Refresh:2;url=giris_sayfasi.php" );
 echo 'Bilgileriniz hatalı...';
 }

}

Yanlış olabilir aceleyle yazdım kontrol et bir çalışmıyorsa tekrar bakalım. Maça yetişiyorum da :)

Bu arada teşekkür ederim. Aynı tabloda olmaları çok mantıklı değil deyince iki farklı tablo oluşturdum bende çalışanlar ve yöneticiler için.
 
Son düzenleme:
Vallahi PHP de çok yeniyim daha 1 2 ay oldu. Güvenlik kısmını yeni yeni öğreniyorum.



O zaman rol oluşturmadan, iki ayrı tablo oluşturup ikisi içinde giriş işlemi yapmam lazım değil mi? Mantıklı değil dediniz ya.

Peki ben güncel olarak phpyi nasıl öğrenebilirim? Yani ilk başta youtubedan video izliyordum ama videolar çok eskiydi en yenileri 1 2 yıllıktı. Udemyden ders aldım ordan devam ettim sonra. 2023 yılında yenilenen bir dersti günceldi yani. Şimdi bakıyorum şu yaptıklarınıza benim öğrendiklerimden çok farklı. Bir de diyorsunuz güvenlik açıkları var diye.



Bu arada teşekkür ederim. Aynı tabloda olmaları çok mantıklı değil deyince iki farklı tablo oluşturdum bende çalışanlar ve yöneticiler için.
Tablo yapını yaz istersen ona göre düzenleyip atayım sana müsait olunca. Eğitim seti için de bakarım bi söylerim sana.
 
Vallahi PHP de çok yeniyim daha 1 2 ay oldu. Güvenlik kısmını yeni yeni öğreniyorum.



O zaman rol oluşturmadan, iki ayrı tablo oluşturup ikisi içinde giriş işlemi yapmam lazım değil mi? Mantıklı değil dediniz ya.

Peki ben güncel olarak phpyi nasıl öğrenebilirim? Yani ilk başta youtubedan video izliyordum ama videolar çok eskiydi en yenileri 1 2 yıllıktı. Udemyden ders aldım ordan devam ettim sonra. 2023 yılında yenilenen bir dersti günceldi yani. Şimdi bakıyorum şu yaptıklarınıza benim öğrendiklerimden çok farklı. Bir de diyorsunuz güvenlik açıkları var diye.



Bu arada teşekkür ederim. Aynı tabloda olmaları çok mantıklı değil deyince iki farklı tablo oluşturdum bende çalışanlar ve yöneticiler için.

Fehmi uyar izle. Çok sağlam anlatıyor.

Fehmi uyar izle. Çok sağlam anlatıyor.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Tablo yapını yaz istersen ona göre düzenleyip atayım sana müsait olunca. Eğitim seti için de bakarım bir söylerim sana.

Tamamdır teşekkür ederim.

Fehmi uyar izle. Çok sağlam anlatıyor.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

İzledim iyi de sürekli hatalarla karşılaştım. Eski diye mi acaba belki de benim gözümden bir şeyler kaçtı. Tavsiyen için teşekkür ederim.
 
Tablo yapını yaz istersen ona göre düzenleyip atayım sana müsait olunca. Eğitim seti için de bakarım bir söylerim sana.

@dgknbzglu yaparsan sevinirim. Bir de anlatırsan aradaki farkları iyi olur benim açımdan. Öğrenmiş olurum bende. Şimdiden teşekkür ederim.
 

Dosya Ekleri

  • Ekran Görüntüsü (36).png
    Ekran Görüntüsü (36).png
    24,3 KB · Görüntüleme: 37
  • Ekran Görüntüsü (38).png
    Ekran Görüntüsü (38).png
    82,1 KB · Görüntüleme: 27
  • Ekran Görüntüsü (39).png
    Ekran Görüntüsü (39).png
    76,8 KB · Görüntüleme: 21
  • Ekran Görüntüsü (40).png
    Ekran Görüntüsü (40).png
    82,5 KB · Görüntüleme: 18
  • Ekran Görüntüsü (41).png
    Ekran Görüntüsü (41).png
    47,8 KB · Görüntüleme: 37
@dgknbzglu yaparsan sevinirim. Bir de anlatırsan aradaki farkları iyi olur benim açımdan. Öğrenmiş olurum bende. Şimdiden teşekkür ederim.
Açtığın tabloları iletirsen yazayım. Şunun gibi:
admin_tablosu id user_name user_mail user_password user_role
----------------------
uye_tablosu id user_name user_mail user_password user_role
 

Geri
Yukarı