lostyazilim
tr.link

PDO aynı kayıtların girilmesini engelleme

5 Mesajlar 3.341 Okunma
acebozum
tr.link

theharunuysal theharunuysal WM Aracı Kullanıcı
  • Üyelik 21.06.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek .
  • Konum Ankara
  • Ad Soyad H** U**
  • Mesajlar 1880
  • Beğeniler 596 / 202
  • Ticaret 19, (%95)
Merhaba arkadaşlar siteme gelen bir veriyi eğer veritabanında varsa es geçmek isitiyorum bunu başardım ama ben email ve şifre ikisi de varsa kayıt alınmasın istiyorum.


include 'baglan.php';


if (isset($_POST['giris'])) {

$email = $_POST['email'];
$password = $_POST['password'];

$query = $db->prepare("SELECT * FROM user WHERE password = ? ORDER BY password DESC LIMIT 500");
$param = array($password);
$query->execute($param);
if ($query->rowCount()) {
Header("Location:../index2.php");
}
else {


$kaydet=$db->prepare("INSERT into user set
email=:email,
password=:password
");

$insert=$kaydet->execute(array(

'email' => $_POST['email'],
'password' => $_POST['password']
));



if ($insert) {

// echo "kayıt başarılı";

Header("Location:../index2.php");
exit;

} else {

// echo "kayıt başarısız";
Header("Location:index.php?durum=no");
exit;
}


}
}

?>



Kod yapısından da çözmüşsünüzdür eğer password verisi eğer tabloda varsa kayıt etme yoksa kaydet diyor. Ama benim istediğim email ve password ikilisi tabloda varsa kayıt etmesin.
 

 

googleasistan

SheefLAMARCK SheefLAMARCK WM Aracı Kullanıcı
  • Üyelik 31.12.2015
  • Yaş/Cinsiyet 28 / E
  • Meslek Naptın
  • Konum Ankara
  • Ad Soyad F** K**
  • Mesajlar 313
  • Beğeniler 73 / 31
  • Ticaret 8, (%88)
Suanda teldeyim ama soyle yapabilirsin bir değişken olusturup o degiskene gelen veriyi tablodaki olan veriyle karsilastirabilirsin ordan sonra bi if koyarsin dersin bu veri varsa hata sayfasina yonlendirsin veya gelen veri sayfasina bu kayit var diye textboxun ustune yazi yazsin
 

 

MehmetMasa MehmetMasa WM Aracı Kullanıcı
  • Üyelik 05.10.2016
  • Yaş/Cinsiyet 26 / E
  • Meslek Yazılımcı
  • Konum İzmir
  • Ad Soyad M** M**
  • Mesajlar 1946
  • Beğeniler 552 / 554
  • Ticaret 40, (%100)
$query = $db->prepare("SELECT * FROM user WHERE Email = ? && password = ? ORDER BY password DESC LIMIT 500");
$param = array($email, $password);
$query->execute($param);
if ($query->rowCount()) {
Header("Location:../index2.php");
}

Email ve şifre veri tabanında kayıtlı ise almaz sadece mail veya şifre kayıtlı ise alır.
VipTema theharunuysal

kişi bu mesajı beğendi.

theharunuysal theharunuysal WM Aracı Kullanıcı
  • Üyelik 21.06.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek .
  • Konum Ankara
  • Ad Soyad H** U**
  • Mesajlar 1880
  • Beğeniler 596 / 202
  • Ticaret 19, (%95)
$mehmetmasa süper oldu ++ çok teşekkürler.
MehmetMasa

kişi bu mesajı beğendi.

wmaraci
wmaraci

VipTema VipTema Vip Tema Web Tasarım Kullanıcı
  • Üyelik 29.06.2011
  • Yaş/Cinsiyet 38 / E
  • Meslek Vip Tema Web Tasarım A.Ş.
  • Konum Tekirdağ
  • Ad Soyad Ö** I**
  • Mesajlar 1393
  • Beğeniler 704 / 703
  • Ticaret 21, (%100)

mehmetmasa adlı üyeden alıntı

$query = $db->prepare("SELECT * FROM user WHERE Email = ? && password = ? ORDER BY password DESC LIMIT 500");
$param = array($email, $password);
$query->execute($param);
if ($query->rowCount()) {
Header("Location:../index2.php");
}

Email ve şifre veri tabanında kayıtlı ise almaz sadece mail veya şifre kayıtlı ise alır.


Desc limit 500 kısmına gerek yok bu şekilde 500 kayda kadar eşleşme yapılır. Ileride kayıt sayısı 500 ü gectiginde diğerleri eşleşme kontrolüne tabi tutulmazlar. Ek bilgi olarak hatırlatalım arkadaşa.
theharunuysal MehmetMasa

kişi bu mesajı beğendi.

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al