v2.5.2
Giriş yap

Php 3 kere yanlış giriş yapılırsa hata verdirme sorunu

yazilimyolcusu
823 defa görüntülendi ve 3 kişi tarafından değerlendirildi

Merhaba arkadaşlar. Kullanıcı, şifreyi 3 kez yanlış girerse hata verdirmeye çalışıyorum. Bunun içinde veritabanında "hataligirissayisi" diye bir alan açtım. Varsayılan değer olarak da "0" verdim. Aşağıdaki kod ile yapmak istediğim şu: Her yanlış giriş yaptığında veritabanında, o kullanıcıya ait "hataligirissayisi" alanı 1 artırmak istiyorum. Bunu da "insert" işlemi ile yapmaya çalışıyorum ama en aşağıdaki "giriş yapılamadı" uyarısı veriyor ve veritabanındaki "hataligirissayisi" alanına da ekleme yapamıyorum. Log kaydında hata yok. Sayfa da hata vermiyor.

<?php
if($_POST['kullanicigirisgonder']) {
        $kullaniciadi    = trim(strip_tags(base64_encode($_POST['kullanicigirisadi'])));
        $kullanicisifre  = trim(strip_tags(base64_encode($_POST['kullanicigirissifre'])));
        ?>
        

        <?php
        $girissorgusu  = "SELECT * FROM kullanicilar WHERE kullanicilar_kullaniciadi = '$kullaniciadi' AND kullanicilar_sifre = '$kullanicisifre'";
        $girissorgu    = mysqli_query($db, $girissorgusu);
        $sonuc = mysqli_fetch_array($girissorgu);

        
        if(($sonuc['kullanicilar_kullaniciadi'] == $kullaniciadi) AND ($sonuc['kullanicilar_sifre'] == $kullanicisifre)) {

            $_SESSION['adi']       = $sonuc;
            $_SESSION['sifresi']   = $sonuc;

            if(!empty($_POST['benihatirla'])) {
                $cerez = trim(strip_tags($_POST['benihatirla']));
                $cerezadi     = "kullanicicerezi";
                $cerezdegeri  = "kullanicicerezsifre";
                setcookie($cerezadi, $cerezdegeri, time() + (86400), "/"); // 86400 = 1 day
            } else {
                
            }

            header("Refresh:0; url=index.php");
        } elseif(($sonuc['kullanicilar_kullaniciadi'] == $kullaniciadi) AND ($sonuc['kullanicilar_sifre'] != $kullanicisifre)) {
            $girissorg  = "SELECT * FROM kullanicilar WHERE hataligirissayisi";
            $girissor    = mysqli_query($db, $girissorg);
            $say = mysqli_num_rows($girissor);
            $saydir = mysqli_fetch_num($girissor);

            for($x=3; $x >= $saydir['hataligirissayisi']; $x++) {

                $ekle = "INSERT INTO kullanicilar (hataligirissayisi) VALUES ('$x')";
                if(mysqli_query($db, $ekle)) {
                    echo "<center><h1>"."Bir Artırıldı."."</h1></center>"."<center><br><h1>"."Lütfen Tekrar Deneyiniz."."</h1></center>"."<center><br><h2>"."Giriş Sayfasına Yönlendiriliyorsunuz...</center>";
        }
    }
} else {
    echo "<center><img src='images/onayhataresimleri/unlem.png' style='width:50px; height:135px; margin-top:25px;'></center>";
    echo "<center><h1>"."Giriş Yapılamadı."."</h1></center>"."<center><br><h1>"."Lütfen Tekrar Deneyiniz."."</h1></center>"."<center><br><h2>"."Giriş Sayfasına Yönlendiriliyorsunuz...</center>";
    header("Refresh:4; url=giris-formu.php");
}
}
?>
yazilimyolcusu
1013 gün önce

Arkadaşlar kodları session ile tekrar düzenledim. Şu anda tek sorunum şifreyi ilk yanlış girdiğimde undefined "attempts" uyarısı veriyor. Sebebi de şu: Session'a değer vermedim. String değer versem, session "sayılabilir numara değil" uyarısı veriyor. Session'ı sayı olarak yani "$_session["aaa"] = 0;" şeklinde yapsam hata vermiyor ama session'ı da artırmıyor. Hata vermeden nasıl yapabilirim acaba?

<?php
if($_POST['kullanicigirisgonder']) {

            
            $_SESSION["attempts"];


            $kullaniciadi          = trim(strip_tags(base64_encode($_POST['kullanicigirisadi'])));
            $kullanicisifre        = trim(strip_tags(base64_encode($_POST['kullanicigirissifre'])));

            $girissorgusu  = "SELECT * FROM kullanicilar WHERE kullanicilar_kullaniciadi = '$kullaniciadi' AND kullanicilar_sifre = '$kullanicisifre'";
            $girissorgu    = mysqli_query($db, $girissorgusu);
            $sonuc = mysqli_fetch_array($girissorgu);

            if(($sonuc['kullanicilar_kullaniciadi'] == $kullaniciadi) AND ($sonuc['kullanicilar_sifre'] == $kullanicisifre)) {

                $_SESSION['adi']       = $sonuc;
                $_SESSION['sifresi']   = $sonuc;


                if(!empty($_POST['benihatirla'])) {
                    $cerez = trim(strip_tags($_POST['benihatirla']));
                    $cerezadi     = "kullanicicerezi";
                    $cerezdegeri  = "kullanicicerezsifre";
                    setcookie($cerezadi, $cerezdegeri, time() + (86400), "/"); // 86400 = 1 day
                } else {

                }


            } else {
                echo "<center><img src='images/onayhataresimleri/unlem.png' style='width:50px; height:135px; margin-top:25px;'></center>";
                echo "<center><h1>"."Giriş Yapılamadı."."</h1></center>"."<center><br><h1>"."Lütfen Tekrar Deneyiniz."."</h1></center>"."<center><br><h2>"."Giriş Sayfasına Yönlendiriliyorsunuz...</center>";
                header("Refresh:1; url=giris-formu.php");


                $_SESSION["attempts"] += 1;
                
                if ($_SESSION["attempts"] > 2) { ?>

                    <div class='fazla-giris-uyarisi'>
                    <?php
                    echo ("İki kezden fazla giriş denemesi <br> Şifremi Unuttum Sayfasına Yönlendiriliyorsunuz");

                    header("Refresh:4; url=bilimhaberleri.php");
                    ?>
                    </div>
                <?php            
                }
                ?>
<?php            

            }
    }
?>