Çözüldü PHP birden fazla kayıt engelleme

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

kroxlycode

Decapat
Katılım
28 Ekim 2022
Mesajlar
87
Çözümler
3
Daha fazla  
Sistem Özellikleri
Intel Core i7-13620H | RTX 4050 6GB | 16 GB DDR5 4800 MHz | 512 GB NVMe SSD | 180Hz
Cinsiyet
Erkek
Meslek
Yazılım Geliştirme
Merhaba dostlar, Ajax ile kayıt yapıyorum. Yapmak istediğim aynı mail varsa kaydedilmesin yani her mail için bir hesap olmasını istiyorum aynı maille bir daha hesap açılmasın. Kodu yazdım fakat hata falanda vermiyor. Email kontrolü yapmıyor.

PHP:
<?php
include "../vt/init.php";

$ad = $_POST["ad"];
$soyad = $_POST["soyad"];
$d_tarihi = $_POST["d_tarihi"];
$email = $_POST["email"];
$sifre = $_POST["sifre"];

$varolankullanici = DB::queryFirstRow("SELECT id FROM users WHERE email = ?", $email);

if ($varolankullanici) {
 echo "2";
} else {
 $ekle = DB::insert("INSERT INTO users (ad, soyad, d_tarihi, email, sifre) VALUES (?, ?, ?, ?, ?)", [$ad, $soyad, $d_tarihi, $email, $sifre]);

 if ($ekle) {
 echo "1";
 } else {
 echo "0";
 }
}
?>
 
Çözüm
Hocam, şöyle yapmayın gözünüzü seveyim bunu kod tarafında yapacaksınız.

PHP:
$email = $_POST['email'];
$CheckEmailRecord = $db->prepare("SELECT id,email FROM table WHERE email = :email");
$CheckEmailRecord->execute([":email" => $email]);

if ($CheckEmailRecord->rowCount() == 0) {

 // kullanici kayit kodlarin.

} else {
echo 2;
}

Veya

PHP:
$email = $_POST['email'];
$CheckEmailRecord = $db->prepare("SELECT count(*) as EmailCount FROM table WHERE email = :email");
$CheckEmailRecord->execute([":email" => $email]);
$RowFetch = $CheckEmailRecord->fetch(PDO::FETCH_ASSOC)

if (intval($RowFetch['EmailCount']) == 0) {

 // senin kayit kodlarin.

} else {

echo 2;

}

Bu ikisinden birini kendi dB OOP objenize göre uyarlayın.

Sorunu çözdüm.
PHP:
$varolankullanici = DB::queryFirstRow("SELECT id FROM users WHERE email =?", $email);
Yerine

PHP:
$varolankullanici = DB::getRow("SELECT id FROM users WHERE email = ?", [$email]);

Olacakmış.
Merhaba dostlar, Ajax ile kayıt yapıyorum. Yapmak istediğim aynı mail varsa kaydedilmesin yani her mail için bir hesap olmasını istiyorum aynı maille bir daha hesap açılmasın. Kodu yazdım fakat hata falanda vermiyor. Email kontrolü yapmıyor.

PHP:
<?php
include "../vt/init.php";

$ad = $_POST["ad"];
$soyad = $_POST["soyad"];
$d_tarihi = $_POST["d_tarihi"];
$email = $_POST["email"];
$sifre = $_POST["sifre"];

$varolankullanici = DB::queryFirstRow("SELECT id FROM users WHERE email = ?", $email);

if ($varolankullanici) {
 echo "2";
} else {
 $ekle = DB::insert("INSERT INTO users (ad, soyad, d_tarihi, email, sifre) VALUES (?, ?, ?, ?, ?)", [$ad, $soyad, $d_tarihi, $email, $sifre]);

 if ($ekle) {
 echo "1";
 } else {
 echo "0";
 }
}
?>
Kodda sıkıntı yok.
 
2 olarak yazdırdığın kısımda servis ile kontrol mü yapıyorsun? Sonuç 2 gelmiyor mu aynı maille kayıt olmaya çalıştığında?

Echo 2 gelirse email kullanılıyor diyor.

JavaScript:
const register = (e) => {
 e.preventDefault();
 const formdata = new FormData(e.target);
 let url = "ajax/register";

 $.ajax({
 type: "POST",
 url: url,
 data: formdata,
 cache: false,
 processData: false,
 contentType: false,
 enctype: "multipart/form-data",
 success: function (data) {
 if (data === "1") {
 const Toast = Swal.mixin({
 toast: true,
 position: "top-end",
 showConfirmButton: false,
 timer: 3000,
 timerProgressBar: true,
 didOpen: (toast) => {
 toast.onmouseenter = Swal.stopTimer;
 toast.onmouseleave = Swal.resumeTimer;
 },
 });
 Toast.fire({
 icon: "success",
 title: "Kayıt Olundu! Yönlendiriliyorsunuz..",
 }).then(() => {
 window.location.href = "login";
 });
 } else if (data === "2") {
 Swal.fire({
 icon: "warning",
 width: "300",
 text: "Bu e-posta zaten kullanılıyor.",
 });
 } else {
 Swal.fire({
 icon: "error",
 width: "350",
 text: "Kayıt eklenemedi. Lütfen tekrar deneyin.",
 });
 }
 },
 error: function () {
 Swal.fire({
 icon: "error",
 title: "Hata",
 text: "Sunucu hatası. Lütfen tekrar deneyin.",
 });
 },
 });
};
 

Technopat Haberler

Yeni konular

Geri
Yukarı