• 26-08-2022, 13:51:07
    #1
    Form Elementlerim;
            <div class="col-md-6 mt-2">
                  <label>Mail Adresi</label>
                  <input type="text" class="form-control" name="mail" value="<?php echo $fetch_profile['mail'] ?>">
                  </div>
    
                  <div class="col-md-6 mt-2">
                  <label>Telefon Numaranız</label>
                  <input type="text" class="form-control" name="tel" value="<?php echo $fetch_profile['tel'] ?>">
                  </div>
    
                  <div class="col-md-6 mt-2">
                  <label>Kullanıcı Adınız</label>
                  <input type="text" class="form-control" name="nick" value="<?php echo $fetch_profile['nick'] ?>">
                  </div>
    Gelen Verileri Kontrol Eden Kodum;
      $users=$db->prepare("SELECT * FROM users where mail=:mail or tel=:tel or nick=:nick");
      $users->execute(array(
      'mail'=>htmlspecialchars($_POST['mail'],ENT_QUOTES,'UTF-8'),
      'tel'=>htmlspecialchars($_POST['tel'],ENT_QUOTES,'UTF-8'),
      'nick'=>htmlspecialchars($_POST['nick'],ENT_QUOTES,'UTF-8'),
      ));
      $userscek=$users->fetch(PDO::FETCH_ASSOC);
    
      if(isset($userscek['id'])){
        Header("Location:$url/profile?fail=yes");
        exit;
      }
    Bu işlem profil düzenleme sayfasında oluyor arkadaşlar, dolayısıyla böyle bir mail var mı yok mu kontrol ederken kullanıcının kendisine takılıyor. Umarım anlatabilmişimdir sizce bu sorunu nasıl çözebiliriz daha kolay bir yolu yok mudur?
  • 26-08-2022, 13:55:00
    #2
    Benim genelde uyguladığım şey posttan gelen veri veritabanındaki veriye eşit değilse bu 2. koddaki kontrolü yapmak oluyor. Siz nasıl kullanıyorsunuz?
  • 26-08-2022, 14:14:07
    #3
    Ben sorunu tam anlamadım ne yapmak istiyorsunuz nasıl bir hata alıyorsunuz. Profil güncelleme sayfası mı bu ? Mevcut bir profili güncellemek istiyorsunuz ama bu bilgiler kayıtlı ise başka kullanıcıda buna izin vermek istemiyorsunuz gibi bir yapı mı kurmak istiyorsunuz ?
  • 26-08-2022, 14:30:30
    #4
    bluemansiiz adlı üyeden alıntı: mesajı görüntüle
    Ben sorunu tam anlamadım ne yapmak istiyorsunuz nasıl bir hata alıyorsunuz. Profil güncelleme sayfası mı bu ? Mevcut bir profili güncellemek istiyorsunuz ama bu bilgiler kayıtlı ise başka kullanıcıda buna izin vermek istemiyorsunuz gibi bir yapı mı kurmak istiyorsunuz ?
    Koddan anladığım kadarıyla yapılmak istenen kullanıcının kendi profil sayfası mail username ve telefon numarasını değiştirebiliyor bu 3 ünü post attırıyor ve veritabanında arattırıyor eğer ki bunlara örtüşen farklı bir kullanıcı varsa faile döndürüyor yoksa devam ettiriyor ama sıkıntı olan kullanıcı kendi datasına takılıyor
  • 26-08-2022, 14:33:05
    #5
    Olan kodda değişiklik yapmak istemiyorsanız kullanıcı datalarını fetch ile çekmek yerine rowcount ile toplam satır sayısını alın sadece kendisi varsa count = 1 çıkacaktır başkasıda kullanıyorsa count=2 çıkacaktır şu an ki kodunuzu en az değiştirerek sonuca gitmek bu şekilde olur sanırsam veya mysql sorgunuzda where (mail=x or tel=x or user=x) and id != user[id] şeklinde de yapabilirsiniz
  • 26-08-2022, 14:41:08
    #6
    Sinemium adlı üyeden alıntı: mesajı görüntüle
    Koddan anladığım kadarıyla yapılmak istenen kullanıcının kendi profil sayfası mail username ve telefon numarasını değiştirebiliyor bu 3 ünü post attırıyor ve veritabanında arattırıyor eğer ki bunlara örtüşen farklı bir kullanıcı varsa faile döndürüyor yoksa devam ettiriyor ama sıkıntı olan kullanıcı kendi datasına takılıyor
    Kendisi hariç kullanan var mı diye kontrol etmek gerekiyor sorguda, bunuda oturum açık kullanıcının idsiyle yapabilirsiniz.. Ki zaten kendisi kullanıyorsa neden güncelleme yapıyorsunuz ? Burada mevcut bir veriyi aynısı ile güncellemesinizde olur hatta daha doğru olur. Veri tabanı sorgusunda değişen verilerin update için gitmesi gerekiyor.

    Bunun haricinde or yapısı kullandığınız için her bir verinin başka bir kullanıcı ile eşleşme şansı var burada da bir mantıksal hata mevcut. Dönecek sonuçlardan eşleşen kayıtlardan kullanıcıya mantıklı bir cevap dönmek gerekiyor. Bu kayda sahip kullanıcı var ama hangi veri eşleşiyor.

    Saygılarla.
  • 26-08-2022, 15:44:08
    #7
    Sorgunuzun başına id<>:user_id ekleyin ve profilini düzenleyen user id sine eşit olmaması durumunu kontrol edin.

      $users=$db->prepare("SELECT * FROM users where id<>:id and (mail=:mail or tel=:tel or nick=:nick)");
    ozgur_medya adlı üyeden alıntı: mesajı görüntüle
    Form Elementlerim;
            <div class="col-md-6 mt-2">
                  <label>Mail Adresi</label>
                  <input type="text" class="form-control" name="mail" value="<?php echo $fetch_profile['mail'] ?>">
                  </div>
    
                  <div class="col-md-6 mt-2">
                  <label>Telefon Numaranız</label>
                  <input type="text" class="form-control" name="tel" value="<?php echo $fetch_profile['tel'] ?>">
                  </div>
    
                  <div class="col-md-6 mt-2">
                  <label>Kullanıcı Adınız</label>
                  <input type="text" class="form-control" name="nick" value="<?php echo $fetch_profile['nick'] ?>">
                  </div>
    Gelen Verileri Kontrol Eden Kodum;
      $users=$db->prepare("SELECT * FROM users where mail=:mail or tel=:tel or nick=:nick");
      $users->execute(array(
      'mail'=>htmlspecialchars($_POST['mail'],ENT_QUOTES,'UTF-8'),
      'tel'=>htmlspecialchars($_POST['tel'],ENT_QUOTES,'UTF-8'),
      'nick'=>htmlspecialchars($_POST['nick'],ENT_QUOTES,'UTF-8'),
      ));
      $userscek=$users->fetch(PDO::FETCH_ASSOC);
    
      if(isset($userscek['id'])){
        Header("Location:$url/profile?fail=yes");
        exit;
      }
    Bu işlem profil düzenleme sayfasında oluyor arkadaşlar, dolayısıyla böyle bir mail var mı yok mu kontrol ederken kullanıcının kendisine takılıyor. Umarım anlatabilmişimdir sizce bu sorunu nasıl çözebiliriz daha kolay bir yolu yok mudur?
  • 26-08-2022, 16:21:06
    #8
    fatihemre adlı üyeden alıntı: mesajı görüntüle
    Sorgunuzun başına id<>:user_id ekleyin ve profilini düzenleyen user id sine eşit olmaması durumunu kontrol edin.

      $users=$db->prepare("SELECT * FROM users where id<>:id and (mail=:mail or tel=:tel or nick=:nick)");
    Teşekkür ederim, sorgu işime yaradı, sanırım biraz mysql çalışmam lazım