PDA

Orijinalini görmek için tıklayınız : PHP & Ajax İle Güvenli POST İşlemi



Lontanie
23.Eylül.2018, 03:53
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,De ger3: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 = "kanlibicakli.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('********: /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.

aLinti..