• 17-11-2018, 19:51:12
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhabalar, PHP ile login sistemi yaptım. Panel falan her şeyim tamam ama sadece 1 güvenlik açığım kaldı. Admin panele girerken kullanıcı adını yazınca şifreyi sallayınca giriyor.
     <?php
                            if(isset($_POST["submit"])){
                                $kadi = $_POST["kadi"];
                                $sifre = $_POST["sifre"];
                                $query = $db->prepare('SELECT  * FROM uyeler WHERE kadi = ? OR sifre = ?');
                                $query ->execute([
                                    $kadi , $sifre
                                ]);
                                if($query->rowCount() > 0){
                                    $_SESSION["oturum"] = true;
                                    $_SESSION["kadi"] = $kadi;
                                    $_SESSION["sifre"] = $sifre;
                                    echo '<b style="color:green;">Giriş Yapıldı</b>';
                                    header('refresh:1; url=index.php');
                                }else{
                                    echo "<b style='color:red;'>Kullanıcı Adı Veya Şifre Yanlış</b>";
                                }
                            }
    
                            ?>
  • 17-11-2018, 19:53:37
    #2
    WHERE kadi = ? OR sifre = ?
    and
    olsa olmaz sanırım
  • 17-11-2018, 19:53:40
    #3
    select işleminde kullandığın or değil and olması lazım
  • 17-11-2018, 19:54:40
    #4
    mehmeterdogan80 adlı üyeden alıntı: mesajı görüntüle
    select işleminde kullandığın or değil and olması lazım
    ermanaltind adlı üyeden alıntı: mesajı görüntüle
    WHERE kadi = ? OR sifre = ?
    and
    olsa olmaz sanırım
    AND olarak denedim fakat bu sefer iki bilgiyide doğru girince
    Kullanıcı Adı Veya Şifre Yanlış
    hatası veriyor.
  • 17-11-2018, 19:56:04
    #5
    OR'un anlamı ya da demek yani sen diyorsun ki kullanıcılar arasından kullanıcı adı ya da şifresi doğru olanı seç diyorsun ama demen gereken şifresi ve kullanıcı adı doğru olanı seç. O yüzden OR yerine AND ifadesini kullanmalısın.
  • 17-11-2018, 19:57:15
    #6
    magicphp adlı üyeden alıntı: mesajı görüntüle
    OR'un anlamı ya da demek yani sen diyorsun ki kullanıcılar arasından kullanıcı adı ya da şifresi doğru olanı seç diyorsun ama demen gereken şifresi ve kullanıcı adı doğru olanı seç. O yüzden OR yerine AND ifadesini kullanmalısın.
    AND olarak denedim fakat bu sefer iki bilgiyide doğru girince
    Kullanıcı Adı Veya Şifre Yanlış
    hatası veriyor.
  • 17-11-2018, 20:03:18
    #7
    şifreyi veritabanında md5 olarak tutuyorsan md5 olarak göndermen gerekiyor o yüzden yanlış hatası alabilirsiniz
  • 17-11-2018, 20:07:16
    #8
    $query->rowCount()
    yerine
    $db->rowCount() > 0

    denediniz mi
    okuyabildiğim kadarıyla öyle olması gerekiyor gibi
    fonksiyonu tam bilmediğim için şuan sadece tahminen yaklaşıyorum
  • 17-11-2018, 20:10:18
    #9
    Bu şekilde denermisiniz.

    <?php
    
                           if(isset($_POST["submit"])){
                               $kadi = $_POST["kadi"];
                               $sifre = $_POST["sifre"];
                               $query = $db->query('SELECT  * FROM uyeler WHERE kadi = ? AND sifre = ?');
                               $query ->execute([
                                   $kadi , $sifre
                               ]);
                               if($query->rowCount() > 0){
                                   $_SESSION["oturum"] = true;
                                   $_SESSION["kadi"] = $kadi;
                                   $_SESSION["sifre"] = $sifre;
                                   echo '<b style="color:green;">Giriş Yapıldı</b>';
                                   header('refresh:1; url=index.php');
                               }else{
                                   echo "<b style='color:red;'>Kullanıcı Adı Veya Şifre Yanlış</b>";
                               }
                           }
    
    ?>