Ajax hata mesajı yazdırma
Merhaba arkadaşlar. Şuan yalnızca php ile kodladığım sitemi ajax ile daha dinamik hale getirmeye çalışıyorum. Çok yeniyim ve eksiğim çok. Bazen ne kadar arama yapsamda sorunuma bir çözüm bulamıyorum.
Sorunum şu: Üye girişi yapıldığında işlem başarılı ise önceki sayfaya yönlendiriyor, sorun yok. Fakat işlem başarısız olduğunda gelen cevabı yine başarılı olarak değerlendirdiği için yine yönlendirme yapıyor. Bu success kısmında if ve else kullanımı yapabilir miyiz? Yapabilirsek eğer nasıl yaparız? Çözüm konusunda yardımcı olacaklara şimdiden çok teşekkür ediyorum.
Kodlarım şu şekilde:
<script>
$("button").click(function (event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: '<?php echo $arow->site_url; ?>/sistem/giris.php',
data: $("form").serialize(),
dataType: "html",
beforeSend: function () {
$('#sonuc').html('<div class="spinner-border" role="status"><span class="visually-hidden">Loading...</span></div>');
},
success : function() {
window.history.go(-1);
},
error: function() {
alert('Bir hata oldu. Lütfen daha sonra tekrar deneyin.');
}
});
});
</script>
<?php
if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') die("Hatalı istek");
if ($_POST) {
$uye_mail=strip_tags(trim($_POST['uye_mail']));
$uye_sifre=strip_tags(trim(sha1(md5($_POST['uye_sifre']))));
$unutma=isset($_POST['beni_hatirla']);
$kriptosifre=mb_substr($uye_sifre,0,32);
$uyesor=$db->prepare("SELECT * FROM uye WHERE uye_mail=:mail AND uye_sifre=:sifre AND uye_durum=:durum");
$uyesor->execute(array(
':mail' => $uye_mail,
':sifre' => $kriptosifre,
':durum' => 1
));
$say=$uyesor->rowCount();
if ($say==1) {
$_SESSION['uye_mail']=$uye_mail;
$songiris=$db->prepare("UPDATE uye SET uye_sonip=:i, uye_songiris=:t WHERE uye_mail=:um");
$songiris->execute([':i'=>IP(),':t'=>date('Y-m-d H:i:s'), ':um'=>$uye_mail]);
if ($unutma){
setcookie("uye", sha1(md5($uye_mail)), time()+60*60*24*180, "/");
exit;
} else {
exit;
}
} else {
?>
<br><br>
<span>Eposta adresi veya parola hatalı ya da aktivasyon işlemini tamamlamadınız.</span>
<hr>
<span>Bir hata olmadığından eminseniz eğer lütfen bizimle iletişime geçin.</span>
<?php
}
}
?>
$("form").on("submit", function (e) {
e.preventDefault();
$.ajax({
method: 'POST',
url: '<?php echo $arow->site_url; ?>/sistem/giris.php',
data: $(this).serialize(),
dataType: "json",
beforeSend: () => {
$('#sonuc').html('<div class="spinner-border" role="status"><span class="visually-hidden">Loading...</span></div>');
},
success : response => {
if (response.status) {
// işlem başarılı ise yapılacak işlemler
} else {
// İşlem başarısız ise yapılacak işlemler
}
},
error:() => {
alert('Bir hata oldu. Lütfen daha sonra tekrar deneyin.');
}
});
});
<?php
$response = [];
if (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')
$response = [
'status' => false,
'text' => 'Hatalı istek'
];
if ($_POST) {
$uye_mail=strip_tags(trim($_POST['uye_mail']));
$uye_sifre=strip_tags(trim(sha1(md5($_POST['uye_sifre']))));
$unutma=isset($_POST['beni_hatirla']);
$kriptosifre=mb_substr($uye_sifre,0,32);
$uyesor=$db->prepare("SELECT * FROM uye WHERE uye_mail=:mail AND uye_sifre=:sifre AND uye_durum=:durum");
$uyesor->execute(array(
':mail' => $uye_mail,
':sifre' => $kriptosifre,
':durum' => 1
));
if ($uyesor->rowCount) {
$_SESSION['uye_mail']=$uye_mail;
$songiris=$db->prepare("UPDATE uye SET uye_sonip=:i, uye_songiris=:t WHERE uye_mail=:um");
$songiris->execute([':i'=>IP(),':t'=>date('Y-m-d H:i:s'), ':um'=>$uye_mail]);
if ($unutma)
setcookie("uye", sha1(md5($uye_mail)), time()+60*60*24*180, "/");
$response = [
'status' => true,
'text' => 'Giriş başarılı, yönlendiriliyorsunuz...'
];
} else {
$response = [
'status' => false,
'text' => 'Giriş bilgileri hatalı veya aktivasyon işlemi tamamlanmadı'
];
}
}
echo json_encode($response);