• 11-09-2021, 14:49:52
    #1
    Merhabalar,

    Şöyle bir sayfalama yapım var:
    index.php?sayfa=2
    Tırnak eklediğimde veritabanı açığı oluşuyor;
    index.php?sayfa=2'
    Sayfalama yapısı:
    $Sayfa        = @ceil($_GET['sayfa']); //5,2 girilirse eğer get o zaman onu tam sayı yapar yanı 5 yapıyoruz bu kod ile
    if ($Sayfa < 1 or empty($_GET['sayfa'])) { $Sayfa = 1;} //eğer get değeri yerine girilen sayi 1 den küçükse sayfa değerini 1 yapıyoruz yani 1. sayfaya atıyoruz
    $Say          = $conn->query("SELECT * FROM ****** ORDER BY ****** DESC"); //makale sayısını çekiyoruz
    $ToplamVeri   = $Say->rowCount(); //makale sayısını saydırıyoruz
    $Limit        = 60; //bir sayfada kaç içerik çıkacağını belirtiyoruz. 
    $Sayfa_Sayisi = ceil($ToplamVeri/$Limit); //toplam veri ile limiti bölerek her toplam sayfa sayısını buluyoruz
    if($Sayfa > $Sayfa_Sayisi){$Sayfa = $Sayfa_Sayisi;} //eğer yazılan sayı büyükse eğer toplam sayfa sayısından en son sayfaya atıyoruz kullanıcıyı
    $Goster       = $Sayfa * $Limit - $Limit; // sayfa= 2 olsun limit=3 olsun 2*3=6 6-3=3 buranın değeri 2. sayfada 3'dür 3-4-5-6... sayfalarda da aynı işlem yapılıp değer bulunur
    $GorunenSayfa = 5; //altta kaç tane sayfa sayısı görüneceğini belirtiyoruz.
    $Makale       = $conn->query("SELECT * FROM **** ORDER BY ***** DESC LIMIT $Goster,$Limit"); //yukarda göstere attıgımız değer diyelim ki 3 o zaman 3.'id den başlayarak limit kadar veri ceker.
    Bu GET verisini nasıl güvenli yapabilirim?
  • 11-09-2021, 14:51:07
    #2
    PDO kullanarak
  • 11-09-2021, 14:51:25
    #3
    is_numeric fonksiyonu ile sayısal bir değer olup olmadığını, is_int ile integer bir değer olup olmadığını kontrol ettirdikten sonra,
    intval fonksiyonu ile veritabanı sorgusuna sokabilirsiniz.
  • 11-09-2021, 14:52:27
    #4
    strip tags yap.
    mysql real escape string yap.
    birde o değişken sadece sayı tutacaksa num fonksiyonu ile numeric yap.
  • 11-09-2021, 14:52:34
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    PHP PDO kullanarak tekrar kodla en güvenlisi bu, yoksa bu şekilde çok uğraşırsın.
  • 11-09-2021, 14:52:41
    #6
    pdo
  • 11-09-2021, 14:53:35
    #7
    irfancoban adlı üyeden alıntı: mesajı görüntüle
    PDO kullanarak
    PDO kullanıyorum hocam zaten
    profweb adlı üyeden alıntı: mesajı görüntüle
    is_numeric fonksiyonu ile sayısal bir değer olup olmadığını, is_int ile integer bir değer olup olmadığını kontrol ettirdikten sonra,
    intval fonksiyonu ile veritabanı sorgusuna sokabilirsiniz.
    Bunu denemiştim fakat yapıyı bozmuştu.
    Stein adlı üyeden alıntı: mesajı görüntüle
    PHP PDO kullanarak tekrar kodla en güvenlisi bu, yoksa bu şekilde çok uğraşırsın.
    PDO kullanıyorum hocam zaten
  • 11-09-2021, 14:54:07
    #8
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @mojomi; @Stein; @irfancoban; mysqli yerine neden PDO tercih ettiğinizi, farklarını anlatabilecek birisi var mı?
  • 11-09-2021, 14:54:56
    #9
    mojomi adlı üyeden alıntı: mesajı görüntüle
    pdo
    Koda bakarsanız PDO kullanıyorum hocam