Aynı Kullanıcı Girişi Olmaması İçin

Bu konuyu okuyanlar

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
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.

PHP:
if ($ekle > 0) {
    echo "Kullanıcı Var";
    } elseif ($ekle <= 0) {
    header("Refresh:5; url=index.php");
    echo "<center><h1>"."Başarıyla Kayıt Oldunuz."."</h1></center>"."<center><br><h1>"."Giriş Yapmayı Unutmayınız."."</h1></center>"."<center><br><h2>"."Anasayfa'ya Yönlendiriliyorsunuz...</center>";
    
    } else {
    echo "Kaydınız Başarısız";
}

Yukarıdaki kodlarla aynı kullanıcıyı girdiğimde "Kıllanı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.
 

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Burada kullanıcı kontrolü yaptırmaya çalışıyorum. Yanlış nerede bir bakabilir misiniz?

PHP:
<?php

ob_start();

$db = new PDO("mysql:host=localhost; dbname=databaseadi; charset=utf8", "kullaniciadi", "123456");

$kullanici_adi = trim(strip_tags($_POST['kullanici_adi']));

$sifre = trim(strip_tags($_POST['sifre']));

$role = $_POST['role'];

$eposta = trim(strip_tags($_POST['eposta']));

$ekle = $db->prepare("SELECT * FROM kullanicilar WHERE kullanici_adi= ?");

$ekle->execute(['kullanici_adi'=>$kullanici_adi]);

$kullanici = $ekle->fetch(PDO::FETCH_ASSOC);

if ($kullanici === $ekle['kullanici_adi']) {

echo "Bu kullanıcı Mevcut";

$ekle = $db->prepare("INSERT INTO kullanicilar SET kullanici_adi = ?, sifre = ?, eposta = ?, role = ?");

$ekle->execute([$kullanici_adi, $sifre, $eposta, $role]);

} else ($ekle) {

echo "<center><h1>"."Başarıyla Kayıt Oldunuz."."</h1></center>"."<center><br><h1>"."Giriş Yapmayı Unutmayınız."."</h1></center>"."<center><br><h2>"."Anasayfa'ya Yönlendiriliyorsunuz...</center>";

header("Refresh:2; url=giris-formu.php");

}   

?>
 

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Şu kodlarla hallettim arkadaşlar.

PHP:
$kadi = $_POST['kullanici_adi'];

$query = $db->query("SELECT * FROM kullanicilar WHERE kullanici_adi =
'{$kadi}'")->fetch(PDO::FETCH_ASSOC);

if ($query) {

echo "<center><img src='images/hataresimleri/unlem.png' style='width:50px; height:135px; margin-top:25px;'></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 {
 

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,683
Puanları
113
Yaş
26
rowCount fonksiyonunu da kullanabilirsiniz. Mesela WHERE komutu ile kullanıcı adını belirtip sorguyu çalıştırırsınız, eğer rowcount > 0 ise return atarsınız değilse kullanıcıyı kaydedersiniz.
 
Üst