Projelerimizi Daha Dinamik Tasarlayabilmek İçin Ajax Kullanabiliyoruz. Peki Kullandığımız POST İşlemini Nasıl Daha Güvenli Hale Getirebiliriz Buyrun Birlikte İnceleyelim.
Küçük bir örnek üzerinde açıklamak isterim. Bunun için 3 input ve 1 buton kullanacağım.
HTML Tarafındaki Yapımız:
<form id="Form1"> <input id="Deger1" name="Deger1" /> <input id="Deger2" name="Deger2"/> <input id="Deger3" name="Deger3"/> <button id="Gonder">Gönder</button> </form>
JavaScript Tarafındaki Yapımız:
<script> $("#Gonder").click(function () { /* //***************************************** if ($(Form1.Deger1).val() == "") { alert("Lütfen Değer 1 Boş Bırakmayınız"); return; } if ($(Form1.Deger2).val() == "") { alert("Lütfen Değer 2 Boş Bırakmayınız"); return; } if ($(Form1.Deger3).val() == "") { alert("Lütfen Değer 3 Boş Bırakmayınız"); return; } var FormPost = $("#Form1").serialize(); var DataPost=FormPost + "&&Islem=Kayit"; */ //***************************************** //veya //***************************************** var PostDegeri1=$("#Deger1").val(); var PostDegeri2=$("#Deger2").val(); var PostDegeri3=$("#Deger3").val(); if (PostDegeri1 == "") { alert("Lütfen Değer 1 Boş Bırakmayınız"); return; } if (PostDegeri2 == "") { alert("Lütfen Değer 2 Boş Bırakmayınız"); return; } if (PostDegeri3 == "") { alert("Lütfen Değer 3 Boş Bırakmayınız"); return; } var DataPost={Deger1:PostDegeri1,Deger2:PostDegeri2,Deger3:PostDegeri3,Islem:"Kayit"}; //***************************************** $.ajax( { url: "Test.php", type: "POST", data: DataPost, success: function (Sonuc) { console.log(Sonuc); try{ Sonuc=JSON.parse(Sonuc); var Basarisiz = Sonuc.Basarisiz; var Basarili = Sonuc.Basarili; if (Basarili) { alert(Basarili); //İstenilen Başarılı Mesaj Geldiğinde Yapılacak İşlemler } else if(Basarisiz){ alert(Basarisiz); //İstenilen Başarısız Mesaj Geldiğinde Yapılacak İşlemler }else{ console.log(Sonuc); //Başarılı veya Başarısız Mesaj Geldiğinde Yapılacak İşlemler } }catch (e){ console.log(e+" Hata Oluştu.."); } }, error: function (Sonuc) { console.log(Sonuc); //POST İşlemi Başarısız Olduğunda Yapılacak İşlemler } }); }); </script>
Burada iki türlü kullanım gösterdim hangisini kullanacağınız farketmez , lakin form verileriniz çok fazla olursa her birini tek tek yazmak zahmetli gelebilir o yüzden serialize yapıp göndermeniz pratiklik açısından daha iyi olur.
index veya login Sayfasına oturum açma işlemi başarılı olduğu zamanki duruma aşağıdaki kodu ilave etmelisiniz.
$_SESSION['Token'] = md5($_SERVER['HTTP_USER_AGENT']. "mtlive".$_SERVER['PHPSESSID']); //Oturum Açılırken Kaydı Yapılmalı(login başarılı olduğunda)
SistemAyarlari.php Adında yapılandırma ayarlarımızın bulunduğu bir dosya oluşturalım , İçerisine ilave olarak aşağıdaki kodları ekleyebilirsiniz.
$ServerName = "mucahittopal.com"; //Buradaki Değişken Hangi Domain içinde Çalışıyorsanız Onu Yazmalısınız, Böylece Dışarıdan Gelen POST İşlemlerini Engellenebilir. $Token = md5($_SERVER['HTTP_USER_AGENT']. "mtlive".$_SERVER['PHPSESSID']); //SistemAyarlari.php İçine İlave Edilmeli
Test.php Dosyasının içine aşağıdaki kodları yazabilirsiniz.
session_start(); $SonucArray = []; $UserID = $_SESSION['UserID']; $KayitliToken = $_SESSION['Token']; if (empty($UserID)) { header('location: /index.php'); } else { require_once 'SistemAyarlari.php'; if ($KayitliToken == $Token) { if (is_numeric($UserID)) { if ($_POST) { if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])) { if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { if (isset($_SERVER['HTTP_REFERER'])) { if ($ServerName == $_SERVER['SERVER_NAME']) { $Islem = $_POST['Islem']; if ($Islem == "Kayit") { $Deger1 = $_POST["Deger1"]; $Deger2 = $_POST["Deger2"]; $Deger3 = $_POST["Deger3"]; //Gerekli İşlemlerimizi Yapıyoruz //Örnek Sonuç Üretelim if (1 === 1) { $SonucArray["Basarili"] = "İşlem Başarılı..!"; } else { $SonucArray["Basarisiz"] = "İşlem Başarısız..!"; } } else { $SonucArray["Basarisiz"] = "İşlem Değişkeni Kayit a Eşit Değil..!"; } } else { $SonucArray["Basarisiz"] = "Sunucu Adı Doğru Değil..!"; } } else { $SonucArray["Basarisiz"] = "Yönlendiren Sayfa Yok..!"; } } else { $SonucArray["Basarisiz"] = "Gelen İstek Ajax Değeri Değil..!"; } } else { $SonucArray["Basarisiz"] = "Kullanılabilir Bir İstek Yok..!"; } } else { $SonucArray["Basarisiz"] = "İstek Metodu POST Değil..!"; } } else { $SonucArray["Basarisiz"] = "Sayfaya Gönderilen POST Mevcut Değil..!"; } } else { $SonucArray["Basarisiz"] = "Kullanıcı Oturumu Numara Değil"; } }else{ $SonucArray["Basarisiz"] = "Doğru Güvenlik Kontrolüne Sahip Değilsiniz..!"; } print_r(json_encode($SonucArray)); }
Kodları tek tek açıklama gereği duymuyorum , zaten else durumlarındaki açıklamalar yeterli bilgiyi veriyor diye düşünüyorum.
Eksiğim veya hatam varsa lütfen yorumlarda belirtiniz.
Umarım Faydalı Olur.
Sevgiyle Ve Bilgiyle Kalın...