• 21-12-2019, 11:41:03
    #1
    https://prnt.sc/qdvw6w Giriş kısmının kodlarını bu şekilde ayarladım.

    Alıntı
    localhost/engineering/addcourse.php
    localhost/engineering/addclasstocourse.php
    localhost/engineering/classsearch.php
    localhost/engineering/giveclass.php
    localhost/engineering/takeclass.php


    localhost/business/addcourse.php
    localhost/business/addclasstocourse.php
    localhost/business/classsearch.php
    localhost/business/giveclass.php
    localhost/business/takeclass.php

    localhost/architecture/addcourse.php
    localhost/architecture/addclasstocourse.php
    localhost/architecture/classsearch.php
    localhost/architecture/giveclass.php
    localhost/architecture/takeclass.php
    Şeklinde ayrı ayrı dosyalarım var. Kullanıcı yukarıda verdiğim tüm linklere erişmeye çalışınca karşısında login ekranı çıksın istiyorum. Burada örnek olarak engineering/addcourse.php'yi paylastim, bu dosyada örnek gösterirseniz diğerlerine de aynı işlemi uygularım. Yardimci olabilecek biri varsa çok sevinirim.
  • 21-12-2019, 11:51:18
    #2
    mysqli değil de pdo'ya geçmenizi öneriyorum. Yeni PHP sürümünde mysqli sorgusu desteklenmiyor bile. Bunun dışında kullanıcı adı ve şifreyi veritabanına koşul olarak gönderiyorsunuz, koşulu sağladığında sayfadaki işlemler yapılıyor sanırım. İlk işiniz bir login.php sayfası hazırlamak olsun. Bu sayfada inputlarınızı ve butonunuzu hazırlayın. Yazdığınız koşullu sorguyu ekleyin. Eğer veri gelirse yani 0'dan büyükse session oluşturun. Giriş yapmadan giremeyeceği sayfalarda da en üstte session var mı diye kontrol edin. Eğer yoksa login.php'ye yönlendirin.

    Login ekranında diğer sayfalarda kullanacağınız verileri session'a aktarın. Ben kullanıcı adı, id, tam adı maili gibi bilgileri session'a atarım. Session oluşturmak için aşağıdaki kodu uyarlamalısınız.
    $_SESSION["id"]=$kullaniciid;
    $_SESSION["tamad"]=$kullanicitamad;
    $_SESSION["mail"]=$kullanicimail;
  • 21-12-2019, 12:18:48
    #3
    Merhabalar, birkaç düzeltmeyle birlikte sorunuzu yanıtlamaya çalışacağım.

    gelen username post değerini kullaniciadi değişkenine tanımladığınızdan dolayı aşağıda bulunan ilk query'de $kullaniciadi ve $sifre'yi kullanabilirsiniz. Bir şey farkeder mi? Etmez ama post ile gelen veriyi sql injection durumlarına karşı korumanız için, veriyi veritabanında sorgulamadan önce filtreden geçirmeniz gerekir. Örneğin:
    $kullaniciadi = mysqli_real_escape_string($_POST['username']);
    Bir diğer önerim yine sql sorgulamalarına girmeden önce php ile girilen verinin boş mu değil mi, kullanıcı adi ve şifreniz varsayılan minimum ve maksimum uzunlukta mı kontrol etmelisiniz. bunları php kısmına gelmeden java scriptle de kontrol edebilirsiniz ama aşılabileceğini unutmayın. Çift taraflı kontrol hayat kurtarır.

    Eğer giriş başarılıysa if sorgunuzun içerisine
    $_SESSION["username"]=$kullaniciadi;
    eklediğinizde o kullanıcıya dair oturumu kullanıcı adını tutarak başlatmış olursunuz.

    Diğer sayfaların başına da aşağıdaki kodu ekleyerek oturum başlamamışsa giriş sayfanıza yönlendirebilirsiniz.
    if($_SESSION["username"] == "") { header("Location: login.php");  }
  • 21-12-2019, 13:02:22
    #4
    @ealgan isimli arkadaşın söylediklerine ek olarak, kullanıcı parolalarını en azından md5 ile şifreleyerek kaydederseniz daha sağlıklı olur.
    Kendinize özel bir şekilde şifreleyerek kaydederseniz daha iyi olur tabi.

    Not: Users tablosunda sorgulama yapmadan evvel girilen şifreyi de o şekilde şifrelemeyi unutmayın.