PHP'de aynı kullanıcı adı kullanılıyorsa hata vermesini sağlamak

ogingsan

Picopat
Katılım
15 Ekim 2020
Mesajlar
447
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar PHP yazıyorum. Ufak bir site yaptım giriş yeri ve üye olma yeri var, sorunsuz çalışıyor. Yalnız insanlar aynı kullanıcı adı ile üye olabiliyorlar, bunu hangi kod ile engellerim?
 
Son düzenleyen: Moderatör:
Veritabanı bağlantını yapmış var sayıyorum;

PHP:
$kontrol = $baglanti->prepare("SELECT * FROM uyeler WHERE kadi='$kadi'");
$kontrol->execute();

if ( $kontrol->rowCount() > 0){
     // eğer kullanılmışsa kayıt eklenmez hata verir.
     echo "Aynı kullanıcı adı daha önce kullanılmış";
}
else {
     // eğer kullanılmamışsa kayıt ekleme sorgumuz çalışır.
     echo "Üyelik eklenecek";
}
 
Veritabanı bağlantını yapmış var sayıyorum;

PHP:
$kontrol = $baglanti->prepare("SELECT * FROM uyeler WHERE kadi='$kadi'");
$kontrol->execute();

if ( $kontrol->rowCount() > 0){
// eğer kullanılmışsa kayıt eklenmez hata verir.
echo "Aynı kullanıcı adı daha önce kullanılmış";
}
else {
// eğer kullanılmamışsa kayıt ekleme sorgumuz çalışır.
echo "Üyelik eklenecek";
}

Hocam ben -> ve prepare gibi fonksiyonları kullanmıyorum = falan kullanıyorum yani örnek:

İf ($_post) {
$Uefa= $_post["kullaniciadi"];
$Oafa= $_post["sifre"];
$Button= $_post["button"];

$Kakd= "ınsert ınto testim(kullaniciadi, sifre) values('$uefa','$oafa')";
$Kakadam= mysqli_query($baglan,$kakd);
İf ($kakadam) {
Echo"kayıt başarılı lütfen giriş sayfasına dönünüz!";
}
}
$Kakd= "ınsert ınto testim(kullaniciadi, sifre) values('$uefa','$oafa')";
$Kakadam= mysqli_query($baglan,$kakd);
İf ($kakadam) {
Echo"kayıt başarılı lütfen giriş sayfasına dönünüz!";
}

Gibi bu türden yazabilir misiniz?

[GÜNCELLEME]
Kendime göre düzelttim az çok anladım kodlarınızı şöyle yazdım.

İf ($_post) {
$Uefa= $_post["kullaniciadi"];
$Oafa= $_post["sifre"];
$Button= $_post["button"];

$Kanataral= mysqli_query($baglan,"select * from testim where kullaniciadi= '$uefa'");

$Kanataral2= mysqli_fetch_array($kanataral);

İf ($kanataral2 > 0) {
Echo"bu kullanıcı adı kullanılıyor!";
}Else {

(Diğer kodlar)
}

Başka bir taktiği olan arkadaş varsa buraya gönül rahatlığı ile yazabilir gelecekte bu konuya bakan kardeşler bilgi edinmiş olur :)
 
Son düzenleme:
Hocam ben -> ve prepare gibi fonksiyonları kullanmıyorum = falan kullanıyorum yani örnek:

İf ($_post) {
$Uefa= $_post["kullaniciadi"];
$Oafa= $_post["sifre"];
$Button= $_post["button"];

$Kakd= "ınsert ınto testim(kullaniciadi, sifre) values('$uefa','$oafa')";
$Kakadam= mysqli_query($baglan,$kakd);
İf ($kakadam) {
Echo"kayıt başarılı lütfen giriş sayfasına dönünüz!";
}
}
$Kakd= "ınsert ınto testim(kullaniciadi, sifre) values('$uefa','$oafa')";
$Kakadam= mysqli_query($baglan,$kakd);
İf ($kakadam) {
Echo"kayıt başarılı lütfen giriş sayfasına dönünüz!";
}

Gibi bu türden yazabilir misiniz?

[GÜNCELLEME]
Kendime göre düzelttim az çok anladım kodlarınızı şöyle yazdım.

İf ($_post) {
$Uefa= $_post["kullaniciadi"];
$Oafa= $_post["sifre"];
$Button= $_post["button"];

$Kanataral= mysqli_query($baglan,"select * from testim where kullaniciadi= '$uefa'");

$Kanataral2= mysqli_fetch_array($kanataral);

İf ($kanataral2 > 0) {
Echo"bu kullanıcı adı kullanılıyor!";
}Else {

(Diğer kodlar)
}

Başka bir taktiği olan arkadaş varsa buraya gönül rahatlığı ile yazabilir gelecekte bu konuya bakan kardeşler bilgi edinmiş olur :)
Bu şekilde kod yazarsan sistem sql injection saldırılarına açık olur. Yukarıdaki arkadaşın dediği gibi, PDO kullan. Değişkenleri sorgu cumlecigine gömerken de prepare ve bindValue methodlarini kullan. Insertion sırasında alabileceğin tek hata, kullanıcı adının varlığı değil. Daha bir yığın hata olabilir. Tek hata oymuş gibi direkt insertion yapmak, hata dönerse kullanıcıya, bu kullanıcı adı kullanımda mesajı vermek yanlış bir business logic.
 

Geri
Yukarı