• 23-09-2023, 02:24:39
    #1
    Merhaba Arkadaşlar
    Siteye mail adresi ve şifre ile giriş yapılmakta. Amacım mail adresinin yanında telefon numarası ve username ile de giriş yapılmasını sağlamak. Aşağıdaki kod satırındaki kul_mail yanına OR operatörü kullanıp, kul_tel ve kul_adi ekliyorum ancak bu sefer mail ve şifre ile bile giremiyorum. Ancak OR eklemeyip kul_mail li silip yerine tel veya kullanıcı adını ekleyince giriş yapabiliyorum. Sizce neden çoklu ekleyince olmuyordur?


    $sorgu=$this->db->prepare("SELECT * FROM kullanicilar WHERE kul_mail=? AND kul_sifre=?");
  • 23-09-2023, 02:32:43
    #2
    mail = ? && sifre = ? || username = ? && sifre = ? || tel = ? && sifre = ?

    Şeklinde kullanım sağlamanız lazım
  • 23-09-2023, 02:48:09
    #3
    ByHazerfen adlı üyeden alıntı: mesajı görüntüle
    mail = ? && sifre = ? || username = ? && sifre = ? || tel = ? && sifre = ?

    Şeklinde kullanım sağlamanız lazım
    Cevabınız için teşekkür ederim hocam kodu aşağıdaki gibi yazdım ama hiç biri ile giriş yapamadım.

    $sorgu=$this->db->prepare("SELECT * FROM kullanicilar WHERE |kul_mail=? &&sifre=?| |kul_adi=? &&sifre=?| | kul_telefon=? &&sifre=? ");
  • 23-09-2023, 03:26:08
    #4
    winner adlı üyeden alıntı: mesajı görüntüle
    Cevabınız için teşekkür ederim hocam kodu aşağıdaki gibi yazdım ama hiç biri ile giriş yapamadım.

    $sorgu=$this->db->prepare("SELECT * FROM kullanicilar WHERE |kul_mail=? &&sifre=?| |kul_adi=? &&sifre=?| | kul_telefon=? &&sifre=? ");


    $sorgu = $this->db->prepare("SELECT * FROM kullanicilar WHERE (kul_mail=? AND sifre=?) OR (kul_adi=? AND sifre=?) OR (kul_telefon=? AND sifre=?)");
  • 23-09-2023, 03:40:25
    #5
    ByHazerfen adlı üyeden alıntı: mesajı görüntüle
    mail = ? && sifre = ? || username = ? && sifre = ? || tel = ? && sifre = ?

    Şeklinde kullanım sağlamanız lazım
    Sağolasın hocam. Girer gibi yapıyor ancak girmiyor. Belki başka bir dosyadan da bir yerleri değiştirmem gereklidir. Detaylı inceliyeyim.
  • 23-09-2023, 04:17:20
    #6
    $sorgu = $this->db->prepare("SELECT * FROM kullanicilar WHERE (kul_mail=? OR kul_telefon=? OR kul_username=?) AND kul_sifre=?");
    altında bulunan bind_paramları da düzenlemeniz gerekiyor
  • 23-09-2023, 04:25:25
    #7
    Scripter adlı üyeden alıntı: mesajı görüntüle
    $sorgu = $this->db->prepare("SELECT * FROM kullanicilar WHERE (kul_mail=? OR kul_telefon=? OR kul_username=?) AND kul_sifre=?");
    altında bulunan bind_paramları da düzenlemeniz gerekiyor
    Hocam sayfaya baktım ancak "bind_param" adında bir satır bulamadım.
  • 23-09-2023, 04:55:47
    #8
    altlarında şöyle bir şey olmalı
    $sorgu->bind_param
  • 23-09-2023, 06:56:57
    #9
    Scripter adlı üyeden alıntı: mesajı görüntüle
    $sorgu = $this->db->prepare("SELECT * FROM kullanicilar WHERE (kul_mail=? OR kul_telefon=? OR kul_username=?) AND kul_sifre=?");
    altında bulunan bind_paramları da düzenlemeniz gerekiyor
    Bu kullanımlar bence sadece ve sadece gereksiz sorgudan ve sql satırını uzatmaktan başka bi işe yaramaz
    Bi fonksiyon tanımlanır
    Not :veritabanı bilgilerini kendinize göre düzenleyin

     <?php
    Function multipleLogin($info) {
    $sql='';
    $ext=[] ;
    if(filter_var($info, FILTER_VALIDATE_EMAIL)) {
    //Kullanıcı eğer mail adresiyle giriş yapmaya çalışmışsa
    $sql='user_mail=:info' ;
    } elseif( preg_match("/^[0-9]{3}-[0-9]{7}$/", $info)) {
    //Kullanıcı eğer numarayla giriş yapmaya çalışmışsa
    $sql='user_phone=:info' ;
    } elseif(!empty($info)) {
    //Kullanıcı formu boş göndermemişse
    $sql='user_name=:info' ;
    }
    if(empty($sql)){return false;
    } else{
    $ext['info']=$info;
    $pdo->prepare("select * from user where". $sql) ;
    $pdo->execute($ext) ;
    if($pdo->rowCount() >0){
    return true
    }else{
    return false;
    }
    }
    }
    }?>