Merhabalar. Veritabanında aynı kullanıcı olmaması için veritabanında "kullanıcı" kısmını "benzersiz" olarak tanımladım. Kayıt olacak kişi kayıt formunda aynı kullanıcı adını yazdığında veritabanına herhangi bir şekilde de kayıt yapmıyor. Buraya kadar sıkıntı yok. Ama kayıt olacak kişiye de uyarı vermiyor. Ben de şöyle bir şey yaptım.
$ekle = $db->prepare("INSERT INTO kullanicilar SET kullanici_adi = ?, sifre = ?, role = ?"); $ekle->execute([$kullanici_adi, $sifre, $role]);
if ($ekle!=0) {
echo "<center><h1>"."Bu Kullanıcı Adı Daha Önceden Alınmış."."</h1></center>"."<center><br><h1>"."Kayıt Sayfasına Tekrar Yönlendiriliyorsunuz."."</h1></center>"; header("Refresh:2; url=kayit-formu.php");
Yukarıdaki kodlarla aynı kullanıcıyı girdiğimde "Kullanıcı Var" uyarısı veriyor ve veritabanına kayıt yapmıyor. Farklı Bir kullanıcı adı girdiğimde "Kullanıcı Var" uyarısı veriyor ve kayıt yapıyor. Yani farklı kullanıcı girdiğimde veritabanına kayıt yapıyor ama "Kullanıcı Var" uyarısını da veriyor. Aynı kullanıcıyı kayıt etmek istediğimde de ""Kullanıcı Var" uyarısı veriyor.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
Hata verirse x yap demek sağlıklı bir yöntem değil. oun yerine select ile kontrol et kayit gelmiyorsa insert et veya ikisini tek sorguda yap ama exception fırlatmak maaliyeti yüksektir logiclerde kullanılmamalı.
Hocam hatan şurada bu bir veri var mı yok mu diye sorgulama değil direk veri ekleme olayı. Senin yaptığın işlemde girdiğin değer olsa da olmasa da insert ettiği için ya da etmeye çalıştığı için işlemin sonucu sana her türlü 0'dan farklı döner yani $ekle != 0 ifadesi iki türlü de gerçekleşmiş oluyor.
Insert işleminden önce Select ile girilen değer tabloda var mı diye bakman gerek, aşağıya örnek olarak bulduğum bir php kodu atıyorum.
$user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1"; $result = mysqli_query($db, $user_check_query); $user = mysqli_fetch_assoc($result);
if ($user) { // if user exists if ($user['username'] === $username) { array_push($errors, "Username already exists"); }
echo "<center><h1>"."Bu Kullanıcı Adı Kullanılmaktadır"."</h1></center>"."<center><br><h1>"."Başka Bir Kullanıcı Adı Deneyiniz"."</h1></center>"."<center><br><h2>"."Kayıt Sayfasına Yönlendiriliyorsunuz...</center>";
echo "<center><h1>"."Bu Kullanıcı Adı Kullanılmaktadır"."</h1></center>"."<center><br><h1>"."Başka Bir Kullanıcı Adı Deneyiniz"."</h1></center>"."<center><br><h2>"."Kayıt Sayfasına Yönlendiriliyorsunuz...</center>";
header("Refresh:5; url=kayit-formu.php");
} else {
Rica ederim, bir de şöyle bir şey de olabilir. Mesela INSERT sorgusunu yaptırdıktan sonra if-else ile onun error code yani hata kodunu alıp eğer bu hata kodu aynı kullanıcıyı ekleyememesi ile alakalı ise kullanıcıya da ona göre hata mesajı yazdırırsın. Bir tane uygulamada yapmıştım bunu ben. Aşağıya mesela örnek kodu atıyorum:
$guncelle=$baglanti->prepare("INSERT INTO kullanicilar SET kullanici_adi=?, Sifre=?");
$guncelle->execute(array("$username","$sifre")); if($guncelle->errorInfo()[1]!=null) { print_r($guncelle->errorInfo()[1]); //1'nci indeks Mysql hata kodunu verir. (detaylı bilgi>https://www.php.net/manual/tr/pdo.errorinfo.php) } else { echo "Veri Eklendi"; } }
Örneğin errorInfo kısmında mesela "1062" hata kodunu döndürürse bu "duplicate entry" hatası demek oluyor MySQL için, ben de burada uygulama tarafında bu hataya göre kullanıcıya "Bu kullanıcı adı zaten var." gibi bir hata yazdırıyordum.
Tabi alternatif olarak söyledim bu yöntemi.
< Bu mesaj bu kişi tarafından değiştirildi Fulton -- 5 Haziran 2020; 18:2:47 >
Yukarıdaki kodlarla aynı kullanıcıyı girdiğimde "Kullanıcı Var" uyarısı veriyor ve veritabanına kayıt yapmıyor. Farklı Bir kullanıcı adı girdiğimde "Kullanıcı Var" uyarısı veriyor ve kayıt yapıyor. Yani farklı kullanıcı girdiğimde veritabanına kayıt yapıyor ama "Kullanıcı Var" uyarısını da veriyor. Aynı kullanıcıyı kayıt etmek istediğimde de ""Kullanıcı Var" uyarısı veriyor.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.