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. :)
@qplot hocam bahsettiğiniz şekilde de olsa istediğim sonucu vermeyecek, çünkü 1 ve 3'ün yan yana olması gerekiyor bahsedilen sorguda item_filter
'ın 1,2,3 şeklinde olduğu bir durumda sonucu getirmeyecektir.
$itemSQL = 'SELECT * FROM items WHERE item_filter REGEXP "1" AND item_filter REGEXP "3"';
abdullahx hocam yukarıdaki sorguda istediğim sonuca ulaştım, bende yardımlarınız için çok teşekkür ederim. :)
@bugraskl hocam FIND_IN_SET()
'i araştırmalarım sonucu görmüştüm ama ben mi kullanamadım bilemedim. :)
$itemSQL = 'SELECT * FROM items WHERE FIND_IN_SET("1,3", item_filter)';
şeklinde sorgu yaptığımda sonuç 0 dönüyor. :)
@serkan hocam gerçek link üzerinden kolay, metin olarak elimizde olan bir URL üzerinde bu işlemi yapabilmem gerekiyor.
Araştırmalarım sonucu şuna ulaştım, istediğim sonucu veriyor. İhtiyacı olan olursa deneyebilir, daha iyi bir çözüm varsa onu da ekleyebilirsiniz.
$url = "https://www.prototurk.com/sorular/cevaplar?sayfa=2&filtre=prototurk,soru,cevap";
$getItems = explode("?", $url);
parse_str($getItems[1], $itemArray);
@serkan hocam bu sonuç işimi nasıl görecek tam olarak anlayamadım. :)
key=>0 value=>https://www.prototurk.com/sorular/cevaplar key=>1 value=>sayfa=2&filtre=prototurk,soru,cevap
Anlatmak istediğimi tam anlamadınız sanırım. GET'den gelen sayfa ve onun değeri, filtre ve onun değeri şeklinde dizi olarak almam gerekiyor. Yani tam olarak $sonuç
değişkenindeki dizi gibi.
@serkan hocam number_format()
fonksiyonunu biliyorum fakat bu fonksiyon 1000'li rakamlarda noktalama da yapıyor. İşin özünde yukarda belirttiğim gibi decimal(9,2) şeklinde veritabanında tutarken zaten kendi istediğim işlemi yapıyor. Sepette ve sipariş detayında doğru rakamları gösterebilmek için aslında bu çabaya girdim. number_format()
ile çözeceğim gibi görünüyor. Teşekkür ederim. :)
@abdullahx hocam,
uasort($dizi1, fn($a, $b) => $a['item_id'] - $b['item_id']);
uasort($dizi2, fn($a, $b) => $a['item_id'] - $b['item_id']);
kısmında hata alıyorum ama bu fonksiyonu daha önce de görmediğim için nasıl kullanıldığını bilmiyorum o yüzden anlayamadım da hatanın nerede olduğunu. :)
- D Ü Z E N L E M E -
PHP sürümü 7.2'deydi, 7.4'e yükselttim hata gitti.
@abdullahx hocam çok teşekkür ediyorum diziler konusunda çok yardımın dokunuyor. :)
@abdullahx Hocam çok teşekkür ederim çalıştı. fetchAll(2)
kısmına takıldı gözüm. Denedim fetchAll(PDO::FETCH_ASSOC)
ile aynı sonucu veriyor. 2 neden?
@abdullahx hocam halihazırda bulundurabilirim fakat bu yöntem daha çok ilgimi çekiyor. İlerleyen zamanda aynı şekilde popuplar, modallar da yapacağım. Dediğiniz kısmen doğru ilk çağrıda dom'da olmadığı için olmuyor sanırım fakat bunun bir yöntemi olmalı.
@gokcin hocam yanlış anladınız sanırım. Ajax işlemi başmadan önce fadeIn, bittikten sonra fadeOut yapmak istiyorum.
@ebykdrms hocam çok teşekkür ederim bir türlü kuramamıştım mantığı. :))