ajax success error verdirme
$(function () {
$("#login").on("submit", function (e) {
e.preventDefault();
$.ajax('ajax/login.php', {
method: 'POST',
data: $(this).serialize(),
dataType: "json",
success: function(response){
$('#log').html('Başarılı');
},
error: function(response){
$('#log').html('Başarısız');
}
})
})
});
<?php
include '../class/fonksiyon.php';
if($_POST) {
$query = $db->prepare("SELECT * FROM psikolog where telefon=:telefon AND sifre=:sifre LIMIT 1");
$giris = $query->execute(array(":telefon" => $_POST['telefon'], ":sifre" => $_POST['sifre']));
$giris = $query->fetch(PDO::FETCH_ASSOC);
if ($giris) {
$response = [
'status' => true
];
$_SESSION['vb']['login'] = 88888;
$_SESSION['vb']['id'] = $giris['id'];
$_SESSION['vb']['ad'] = $giris['ad'];
} else {
$response = [
'status' => false
];
}
echo json_encode($response);
}
?>
Giriş bilgilerim doğru da olsa yanlışta olsa ya başarılı ya da başarısız diyor bu dengesizliği nasıl düzeltebilriim
Ek olarak giriş başarılı ile hesabim kısmına nasıl yönlendirebilirim
setTimeout(function(){
window.location = "hesabim";
}, 5000);
şeklinde denediğim de yanlış veride girsem hesabim kısmına yönlendirme yapmakta
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Başarısız durumunda $response
dizisine ihtiyacın yoksa şu şekilde ulaşabilirsin.
Ek olarak bir kaç basit güvenlik önlemi gösterdim.
$(function () {
$("#login").on("submit", function (e) {
e.preventDefault();
$.ajax('ajax/login.php', {
method: 'POST',
data: $(this).serialize(),
dataType: "json",
success: function(response){
if (response == "ERROR") {
alert("GİRİŞ İŞLEMİ BAŞARISIZ!");
}else {
$('#log').html('Başarılı');
setTimeout(function () {
window.location = "hesabim";
}, 5000);
}
},
error: function(response){
alert("AJAX isteği başarısız oldu");
}
});
});
});
function post($item) {
return htmlspecialchars(strip_tags($_POST[$item]));
}
if(isset($_POST)) {
$query = $db -> prepare("SELECT * FROM psikolog WHERE telefon = :telefon AND sifre = :sifre LIMIT 1");
$query -> execute(["telefon" => post('telefon'), "sifre" => post('sifre')]);
$row = $query -> fetch(PDO::FETCH_ASSOC);
if ($row["telefon"] == post('telefon') && $row["sifre"] == post('telefon')) {
$response = [
'status' => true
];
$_SESSION['vb']['login'] = 88888;
$_SESSION['vb']['id'] = $row['id'];
$_SESSION['vb']['ad'] = $row['ad'];
echo json_encode($response);
}else {
echo "ERROR";
}
}
Kodları denemedim, en azından değiştirdiğim yerlerden anlatmak istediğim mantığı alabilirsin. İyi çalışmalar. :)
ajax kısmında bulunan error bölümü, gönderdiğin sayfadan hata dönerse çalışır. O da kod hatası vs. olma durumunda. Sayfanda bir hata yoksa her şekilde success bölümü çalışır sen onun içinde karşılaştırma yapacaksın.
response.status değerini kontrol edip, ona göre işlem yapacaksın.