• 26-04-2021, 04:26:40
    #1
    Merhabalar,
    Ben üyelik örneği arıyorum.
    internette bir sürü örnek indirdim kontrol ettim ama çoğu ya bozuk ya da admin yetkisi yok.
    Aradığım Örnek şöyle ;
    admin_id olacak sqlda eğer 1 se xxx/admin kısmına girecek değilse girmicek.
    kayıt ol giriş yap standart bi form.
    giriş yapanlar giriş yap sayfasını göremicek.
    Elinizde böyle bi örnek varsa verebilirseniz çok mutlu olurum php & sqlda yeniyim bu tarz örnekleri inceleyerek tamamen çözmeye çalışıyorum.
  • Kabul Edilen Cevap
    • KarayelHosting adlı üyeden alıntı: mesajı görüntüle
      login.php içeriğini Böyle yaptım ;
      <?php
      ob_start();
      session_start();
      include 'config/config.php';
       
      # Giriş Kontrolü
      if ( isset($_SESSION["yonetici"]) )
      {
          header("Location: panel");
          return;
      }
      # POST EDİLEN GİRİŞ BİLGİLERİ
      if( $_POST )
      {
        # Yönetici Bilgi Değişkenleri
        $klnYonetici = $_POST["klnYonetici"];
        $klnSifre    = $_POST["klnSifre"];
       
        # Veritabanı Sorgusu
        $sorgu = $db -> query("SELECT * FROM tblAdmin WHERE klnYonetici = '$klnYonetici' && klnSifre = '$klnSifre'", PDO::FETCH_ASSOC);
       
        # IF TRUE
        if( $sorgu -> rowCount() )
        {
          # SESSION Değişkenleri
          $_SESSION["yonetici"] = true; // Session Değeri
          $_SESSION["klnYonetici"] = $klnYonetici;
          $_SESSION["klnSifre"] = $klnSifre;
       
          # Giriş başarılı ise panele yönlendir.
          header("Location: ../panel");
        }else{
          # Giriş başarılı değilse hata kodu ver.
          header("Location: ../failedLogin.php");
        }
       
      }else{
        # Giriş Ekranı
        echo
        '
        <form method="POST" class="user">
          <div class="form-group">
            <input type="text" required name="klnYonetici" class="form-control form-control-user" id="exampleInputEmail" aria-describedby="emailHelp" placeholder="Yönetici Adını Giriniz.">
          </div>
          <div class="form-group">
            <input type="password" required name="klnSifre" class="form-control form-control-user" id="exampleInputPassword" placeholder="Password">
          </div>
       
          <input type="submit" class="btn btn-primary btn-user btn-block" value="Giriş Yap">
        </form>                      
        ';
      }
      ?>
      Mysql ise böyle ;



      Ekle ile hesap oluşturdum giriş yaparken bu hatayla karşılaşıyorum ;

      Warning: Undefined variable $db in xampphtdocsbloglogin.php on line 22

      Fatal error: Uncaught Error: Call to a member function query() on null in xampphtdocsbloglogin.php:22 Stack trace: #0 {main} thrown in xampphtdocsbloglogin.php on line 22

      Config Php İçeriği ;
      <?php
      $siteadresi = "http://localhost/blog";
      try {
      $vt = new PDO("mysql:host=localhost;dbname=blog;charset=utf8;","root","");
      }catch (PDOExeption $hata) {
      echo $hata->getMessage();
      }
      ?>
      Yardım Ederseniz Mutlu olurum

      Config dosyasında vt değişkenin db olarak değiştirir misin hocam ben kendi configimde sorularıma vt değil db olarak kullanmışım
  • 26-04-2021, 04:28:04
    #2
    Hocam hangi dil ile, hangi framework'de bir yardım istiyorsunuz? Bunları belirtmelisiniz.
  • 26-04-2021, 04:30:06
    #3
    flyingatm adlı üyeden alıntı: mesajı görüntüle
    Hocam hangi dil ile, hangi framework'de bir yardım istiyorsunuz? Bunları belirtmelisiniz.
    Php & Mysql Basit bi örnek olması yetiyor birazcık anlıyorum işin mantığını çözmeye çalışıyorum
    istediğim sadece basit bi örnek yani tasarım vb olmıcak giriş yapabilecek kayıt olabilecek giriş yaptıysa giriş sayfası gözükimcek aynı eposta ve ya k.adı varsa kayıt olamıcak belirli idler /admin kısmına girebilecek
    Edit : Başlıkta yazdığım admin panelli derken yani ayarlar falan değil onları yaptım sadece x idli kişiler oraya girebilsin gibi
  • 26-04-2021, 04:48:03
    #4
    KarayelHosting adlı üyeden alıntı: mesajı görüntüle
    Php & Mysql Basit bi örnek olması yetiyor birazcık anlıyorum işin mantığını çözmeye çalışıyorum
    istediğim sadece basit bi örnek yani tasarım vb olmıcak giriş yapabilecek kayıt olabilecek giriş yaptıysa giriş sayfası gözükimcek aynı eposta ve ya k.adı varsa kayıt olamıcak belirli idler /admin kısmına girebilecek
    Edit : Başlıkta yazdığım admin panelli derken yani ayarlar falan değil onları yaptım sadece x idli kişiler oraya girebilsin gibi
    Hocam bu cevabı vermenin bir sürü koşulu var hala lakin, 2 senaryo için de yatmadan yazabileceğimi yazacağım.

    1) Eğer ki mevcutta session, cookie ayarları yapılmış ise tek yapmanız gereken bir SQL sorgusu çevirmek; şöyle bir sorgu:

    $veri = SELECT user_id FROM users WHERE user_name = X

    tabii sorgunun escape edildiğinden ve gelen verinin de sanitize edildiğinden emin olun.

    if($veri === 1){ header("location: gideceği url")}

    mantığı kullanmanız gerek.

    lakin bu soruyu soruyorsanız muhtemelen PHP'ye meraklı kategorisinde birisiniz ve bir SQL sorgusu çeviriyorsunuz. Kanımca her şeyden önce sql injection, data sanitizing, data escaping gibi tabirlere bakmalısınız. Şappadanak buraya girerseniz muhtemelen güvenlik zaafiyetleri doğacaktır.
  • 26-04-2021, 04:55:37
    #5
    flyingatm adlı üyeden alıntı: mesajı görüntüle
    Hocam bu cevabı vermenin bir sürü koşulu var hala lakin, 2 senaryo için de yatmadan yazabileceğimi yazacağım.

    1) Eğer ki mevcutta session, cookie ayarları yapılmış ise tek yapmanız gereken bir SQL sorgusu çevirmek; şöyle bir sorgu:

    $veri = SELECT user_id FROM users WHERE user_name = X

    tabii sorgunun escape edildiğinden ve gelen verinin de sanitize edildiğinden emin olun.

    if($veri === 1){ header("location: gideceği url")}

    mantığı kullanmanız gerek.

    lakin bu soruyu soruyorsanız muhtemelen PHP'ye meraklı kategorisinde birisiniz ve bir SQL sorgusu çeviriyorsunuz. Kanımca her şeyden önce sql injection, data sanitizing, data escaping gibi tabirlere bakmalısınız. Şappadanak buraya girerseniz muhtemelen güvenlik zaafiyetleri doğacaktır.
    Cevabınız için teşekkür ederim evet phpye yöneldim bu aralar şuanda üyeliğe dair hiçbi kaydım yok hazırladığım scriptte hangi scriptten iskeletini aldıysam giriş yap kayıt ol ya php sürümüyle uyumlu olmuyor hata basıyor ya da admin kısmı olmuyor bunlardan pek anlamıyorum bu güne kadar kendimi csste geliştirdim cssten başka birşey bilmiyorum php azbişi öğrenmeye devam ediyorum elinizde örnek varsa daha önceden paylaşılmış verirseniz sevinirim.güvenlik zaafiyeti pek önemli değil şuanlık benim için yazdığım scripti kullanmıyacağım sadece hangi kod nerde niçin kullanılmış onları test ediyorum.
    Mesela
    https://www.youtube.com/watch?v=YNm2iz1KnJs
    buradaki scripte bakarak blog scripti yazdım ve şuanda bakmadanda yazabilirim yani bu tarz örnekleri inceleyerek öğrenme yapım var ders izlemeyle öğrenemiyorum
  • 26-04-2021, 04:58:11
    #6
    Daha önceleri sıkça kullandığım giriş kısmını anlatayım.

    İlk olarak PHPMyAdmin kısmında bir db oluştur. DB bağlantısını gerçekleştir.

    Sonrasında tbladmin adında bir tablo oluştur ve üç kolon olsun.

    Sırasıyla;

    id
    klnyonetici
    klnsifre

    Sonrasında giriş için index.php dosyanı aç

    en üst kısma

    ob_start();
    session_start();
    include 'baglanti.php';
    
    # Giriş Kontrolü
    if ( isset($_SESSION["yonetici"]) )
    {
        header("Location: panel");
        return;
    }
    kodunu yapıştır.

    Ardından temel html etiketlerini oluştur.

    Body kısmında ise

    Bir form oluştur. İçinde iki input bir submit butonu olsun.

    İnputların namelerini karışıklık olmasın diye

    klnyonetici ve klnsifre yap. Submit butonun name ise submit yap.

    Daha doğrusu ben sana index.php'de yer alan kodları verip tek tek anlatayım.

                        # POST EDİLEN GİRİŞ BİLGİLERİ
                        if( $_POST )
                        {
                          # Yönetici Bilgi Değişkenleri
                          $klnYonetici = $_POST["klnYonetici"];
                          $klnSifre    = $_POST["klnSifre"];
    
                          # Veritabanı Sorgusu
                          $sorgu = $db -> query("SELECT * FROM tblAdmin WHERE klnYonetici = '$klnYonetici' && klnSifre = '$klnSifre'", PDO::FETCH_ASSOC);
    
                          # IF TRUE
                          if( $sorgu -> rowCount() )
                          {
                            # SESSION Değişkenleri
                            $_SESSION["yonetici"] = true; // Session Değeri
                            $_SESSION["klnYonetici"] = $klnYonetici;
                            $_SESSION["klnSifre"] = $klnSifre;
    
                            # Giriş başarılı ise panele yönlendir.
                            header("Location: ../panel");
                          }else{
                            # Giriş başarılı değilse hata kodu ver.
                            header("Location: ../failedLogin.php");
                          }
    
                        }else{
                          # Giriş Ekranı
                          echo 
                          '
                          <form method="POST" class="user">
                            <div class="form-group">
                              <input type="text" required name="klnYonetici" class="form-control form-control-user" id="exampleInputEmail" aria-describedby="emailHelp" placeholder="Yönetici Adını Giriniz.">
                            </div>
                            <div class="form-group">
                              <input type="password" required name="klnSifre" class="form-control form-control-user" id="exampleInputPassword" placeholder="Password">
                            </div>
    
                            <input type="submit" class="btn btn-primary btn-user btn-block" value="Giriş Yap">
                          </form>                      
                          ';
                        }
    Oluşturacağın form dosyasının metodu POST olacak.

    Yönetici bilgilerini değişkenlere atıyorsun. Bunu input verilerinden gelen POST verileri ile sağlıyorsun.

    Ardından ilk veritabanı sorgunda aldığın değişkenleri veritabanındaki tablo ile eşleştiriyorsun.

    Sonrasında sorgunun true yani bir değer taşıdığı eşleşirse SESSION değerlerini atamaya başlıyorsun.

    Session değerlerinde senin anahtar kelimen yonetici (bu anahtar kelime ile diğer sayfalarda giriş olup olmayacağını sorguluyorsun)

    Ardından else kısmında ise formun kodlarını yazıyorsun. Bu şekilde basitçe bir admin üye girişinin kontrolünü sağlayıp panel ekranını gösterebilirsin.
  • 26-04-2021, 05:07:07
    #7
    DemirayBilisim adlı üyeden alıntı: mesajı görüntüle
    Daha önceleri sıkça kullandığım giriş kısmını anlatayım.

    İlk olarak PHPMyAdmin kısmında bir db oluştur. DB bağlantısını gerçekleştir.

    Sonrasında tbladmin adında bir tablo oluştur ve üç kolon olsun.

    Sırasıyla;

    id
    klnyonetici
    klnsifre

    Sonrasında giriş için index.php dosyanı aç

    en üst kısma

    ob_start();
    session_start();
    include 'baglanti.php';
    
    # Giriş Kontrolü
    if ( isset($_SESSION["yonetici"]) )
    {
        header("Location: panel");
        return;
    }
    kodunu yapıştır.

    Ardından temel html etiketlerini oluştur.

    Body kısmında ise

    Bir form oluştur. İçinde iki input bir submit butonu olsun.

    İnputların namelerini karışıklık olmasın diye

    klnyonetici ve klnsifre yap. Submit butonun name ise submit yap.

    Daha doğrusu ben sana index.php'de yer alan kodları verip tek tek anlatayım.

                        # POST EDİLEN GİRİŞ BİLGİLERİ
                        if( $_POST )
                        {
                          # Yönetici Bilgi Değişkenleri
                          $klnYonetici = $_POST["klnYonetici"];
                          $klnSifre    = $_POST["klnSifre"];
    
                          # Veritabanı Sorgusu
                          $sorgu = $db -> query("SELECT * FROM tblAdmin WHERE klnYonetici = '$klnYonetici' && klnSifre = '$klnSifre'", PDO::FETCH_ASSOC);
    
                          # IF TRUE
                          if( $sorgu -> rowCount() )
                          {
                            # SESSION Değişkenleri
                            $_SESSION["yonetici"] = true; // Session Değeri
                            $_SESSION["klnYonetici"] = $klnYonetici;
                            $_SESSION["klnSifre"] = $klnSifre;
    
                            # Giriş başarılı ise panele yönlendir.
                            header("Location: ../panel");
                          }else{
                            # Giriş başarılı değilse hata kodu ver.
                            header("Location: ../failedLogin.php");
                          }
    
                        }else{
                          # Giriş Ekranı
                          echo
                          '
                          <form method="POST" class="user">
                            <div class="form-group">
                              <input type="text" required name="klnYonetici" class="form-control form-control-user" id="exampleInputEmail" aria-describedby="emailHelp" placeholder="Yönetici Adını Giriniz.">
                            </div>
                            <div class="form-group">
                              <input type="password" required name="klnSifre" class="form-control form-control-user" id="exampleInputPassword" placeholder="Password">
                            </div>
    
                            <input type="submit" class="btn btn-primary btn-user btn-block" value="Giriş Yap">
                          </form>                      
                          ';
                        }
    Oluşturacağın form dosyasının metodu POST olacak.

    Yönetici bilgilerini değişkenlere atıyorsun. Bunu input verilerinden gelen POST verileri ile sağlıyorsun.

    Ardından ilk veritabanı sorgunda aldığın değişkenleri veritabanındaki tablo ile eşleştiriyorsun.

    Sonrasında sorgunun true yani bir değer taşıdığı eşleşirse SESSION değerlerini atamaya başlıyorsun.

    Session değerlerinde senin anahtar kelimen yonetici (bu anahtar kelime ile diğer sayfalarda giriş olup olmayacağını sorguluyorsun)

    Ardından else kısmında ise formun kodlarını yazıyorsun. Bu şekilde basitçe bir admin üye girişinin kontrolünü sağlayıp panel ekranını gösterebilirsin.

    login.php içeriğini Böyle yaptım ;
    <?php
    ob_start();
    session_start();
    include 'config/config.php';
     
    # Giriş Kontrolü
    if ( isset($_SESSION["yonetici"]) )
    {
        header("Location: panel");
        return;
    }
    # POST EDİLEN GİRİŞ BİLGİLERİ
    if( $_POST )
    {
      # Yönetici Bilgi Değişkenleri
      $klnYonetici = $_POST["klnYonetici"];
      $klnSifre    = $_POST["klnSifre"];
     
      # Veritabanı Sorgusu
      $sorgu = $db -> query("SELECT * FROM tblAdmin WHERE klnYonetici = '$klnYonetici' && klnSifre = '$klnSifre'", PDO::FETCH_ASSOC);
     
      # IF TRUE
      if( $sorgu -> rowCount() )
      {
        # SESSION Değişkenleri
        $_SESSION["yonetici"] = true; // Session Değeri
        $_SESSION["klnYonetici"] = $klnYonetici;
        $_SESSION["klnSifre"] = $klnSifre;
     
        # Giriş başarılı ise panele yönlendir.
        header("Location: ../panel");
      }else{
        # Giriş başarılı değilse hata kodu ver.
        header("Location: ../failedLogin.php");
      }
     
    }else{
      # Giriş Ekranı
      echo
      '
      <form method="POST" class="user">
        <div class="form-group">
          <input type="text" required name="klnYonetici" class="form-control form-control-user" id="exampleInputEmail" aria-describedby="emailHelp" placeholder="Yönetici Adını Giriniz.">
        </div>
        <div class="form-group">
          <input type="password" required name="klnSifre" class="form-control form-control-user" id="exampleInputPassword" placeholder="Password">
        </div>
     
        <input type="submit" class="btn btn-primary btn-user btn-block" value="Giriş Yap">
      </form>                      
      ';
    }
    ?>

    Mysql ise böyle ;



    Ekle ile hesap oluşturdum giriş yaparken bu hatayla karşılaşıyorum ;

    Warning: Undefined variable $db in xampphtdocsbloglogin.php on line 22

    Fatal error: Uncaught Error: Call to a member function query() on null in xampphtdocsbloglogin.php:22 Stack trace: #0 {main} thrown in xampphtdocsbloglogin.php on line 22

    Config Php İçeriği ;
    <?php
    $siteadresi = "http://localhost/blog";
    try {
    $vt = new PDO("mysql:host=localhost;dbname=blog;charset=utf8;","root","");
    }catch (PDOExeption $hata) {
    echo $hata->getMessage();
    }
    ?>
    Yardım Ederseniz Mutlu olurum
  • 26-04-2021, 07:53:31
    #8
    Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.
    KarayelHosting adlı üyeden alıntı: mesajı görüntüle
    login.php içeriğini Böyle yaptım ;
    <?php
    ob_start();
    session_start();
    include 'config/config.php';
     
    # Giriş Kontrolü
    if ( isset($_SESSION["yonetici"]) )
    {
        header("Location: panel");
        return;
    }
    # POST EDİLEN GİRİŞ BİLGİLERİ
    if( $_POST )
    {
      # Yönetici Bilgi Değişkenleri
      $klnYonetici = $_POST["klnYonetici"];
      $klnSifre    = $_POST["klnSifre"];
     
      # Veritabanı Sorgusu
      $sorgu = $db -> query("SELECT * FROM tblAdmin WHERE klnYonetici = '$klnYonetici' && klnSifre = '$klnSifre'", PDO::FETCH_ASSOC);
     
      # IF TRUE
      if( $sorgu -> rowCount() )
      {
        # SESSION Değişkenleri
        $_SESSION["yonetici"] = true; // Session Değeri
        $_SESSION["klnYonetici"] = $klnYonetici;
        $_SESSION["klnSifre"] = $klnSifre;
     
        # Giriş başarılı ise panele yönlendir.
        header("Location: ../panel");
      }else{
        # Giriş başarılı değilse hata kodu ver.
        header("Location: ../failedLogin.php");
      }
     
    }else{
      # Giriş Ekranı
      echo
      '
      <form method="POST" class="user">
        <div class="form-group">
          <input type="text" required name="klnYonetici" class="form-control form-control-user" id="exampleInputEmail" aria-describedby="emailHelp" placeholder="Yönetici Adını Giriniz.">
        </div>
        <div class="form-group">
          <input type="password" required name="klnSifre" class="form-control form-control-user" id="exampleInputPassword" placeholder="Password">
        </div>
     
        <input type="submit" class="btn btn-primary btn-user btn-block" value="Giriş Yap">
      </form>                      
      ';
    }
    ?>
    Mysql ise böyle ;



    Ekle ile hesap oluşturdum giriş yaparken bu hatayla karşılaşıyorum ;

    Warning: Undefined variable $db in xampphtdocsbloglogin.php on line 22

    Fatal error: Uncaught Error: Call to a member function query() on null in xampphtdocsbloglogin.php:22 Stack trace: #0 {main} thrown in xampphtdocsbloglogin.php on line 22

    Config Php İçeriği ;
    <?php
    $siteadresi = "http://localhost/blog";
    try {
    $vt = new PDO("mysql:host=localhost;dbname=blog;charset=utf8;","root","");
    }catch (PDOExeption $hata) {
    echo $hata->getMessage();
    }
    ?>
    Yardım Ederseniz Mutlu olurum

    Config dosyasında vt değişkenin db olarak değiştirir misin hocam ben kendi configimde sorularıma vt değil db olarak kullanmışım