folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder İf ($Count>0) Mi Demeli İf ($Count==0) Mı?



İf ($Count>0) Mi Demeli İf ($Count==0) Mı?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    merhaba arkadaşlar, yazdığım kodların daha düzenli olması adına, önce istisna ve hataları yazıp sonra yapmak istediğim işlemi yazıyorum

    bir sql sorgulaması yaptıktan sonra ise örneğin bir data aradığım zaman sorguyu çalıştırıp

        $stmt1->execute();
        $count = $stmt1->rowCount();
        if ($count > 0) {

    yapıyorum sonra datayla işimi görüp kapatıp else le de hatayı yazıyorum.

    acaba başta söylediğim gibi daha düzenli olması için önce if ($count==0) { echo 'hata mesajı!';} yapsam, bu, sistemde bir açık yaratır mı?

     if ($count==0) yeterli olmaz da  if ($count===0 || !is_int($count) ) gibi bir şey mi yazmalıyım?

    kofcu tarafından 08/Haz/16 23:04 tarihinde düzenlenmiştir

    ben de sevgiden yanayım...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Altair
    Altair's avatar
    Kayıt Tarihi: 31/Aralık/2009
    Erkek

    Bu konuda uzmanlığım yok ama bence $count == 0 mantıksal olarak  >0 dan daha keskin bir koşul oluyor. integer olduğundan emin olunması gerekiyor ama tabi.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    if ($count==0) yeterli olur, boşuna oyalanma buralarda. 

    Ayrıca postun içeriği değil ama başlıktaki iki ifade birbirinin alternatifi değil, başka şeyleri ifade ediyor.

    if ($count===0 || !is_int($count) ) bu sorguda da iki ifadenin yerini değiştirirsen daha mantıklı olur. || işleminde ilk ifade true ise ikinciye hiç bakılmıyor olmalı. Bu case'de ilki false olsa bile ikincinin true olma ihtimali bir işine yaramaz. İlk ifade true ise zaten ikinciye bakılmaz vs..


    Sen hiç kaval çaldın mı?
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    cevaplar için teşekkür ederim. kendimi anlatabildim ama değil mi?

    direk somut örnek vermem gerekirse login formunda profili çekerken girilen kullanıcı adının önce olup olmadığına bakılıyor. varsa şifreyi karşılaştırıyor vesaire. varsa için if($count>0) yapmak yerine yoksa error ver exit yap şeklinde if ($count===0) { echo 'hata mesajı!';exit;} mi yapsam diye düşünmüştüm.

    ayrıca evet başlığı yanlış yazmışım nedense :) (düzelttim)

    "||" için o mantığı bilmiyordum teşekkürler.

    soru sorma amacım olur da bi şekilde hata vesaire olabilir mi? mesela bir şekilde bir kullanıcı $count değişkenini '1==1 || 0' gibi bir şey gönderip bi açık oluşturmuş olabilir mi gerçi bu paranoyak mantıkla aynı şey kodun her yerinde olabilir :)

    bu mesajı yazarken de düşündüm ki evet ya gereksiz kasıyorum, sonuçta çoğunlukla $count>0 olacaktır. gereksiz yere $count'ın 0 olup olmadığına bakmış olur o zamanlarda, gereksiz işlem yapmış olur server.


    ben de sevgiden yanayım...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    PcK0
    PcK0's avatar
    Kayıt Tarihi: 13/Nisan/2007
    Erkek

    Sınıf içindeki fonksiyon olur, sınıf dışındaki fonksiyon olur, fonksiyon kullanmak lazım.

    if( !koşul ) {
      if( !başkaKoşul ) {
        if( !bamBaşkaKoşul ) {
          // # İşlemler, işlemler
        }
      }
    }

    gibi bir yapı ya da

     

    if( !koşul and !başkaKoşul and !bamBaşkaKoşul ) {
      // # İşlemler, işlemler
    }

     

    yerine

    function birFonksiyon() {
      if( koşul ) { return false; }
      if( başkaKoşul ) { return false; }
      if( bamBaşkaKoşul ) { return false; }
      
      // # İşlemler, işlemler..
    }

    gibi temiz birşeyler yazmak çok daha güzel olacaktır.

     

    PcK0 tarafından 08/Haz/16 23:47 tarihinde düzenlenmiştir

    Sadece bi imza..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    JPriest
    JPriest's avatar
    Kayıt Tarihi: 09/Mart/2007
    Erkek

    @kofcu

    Sql Injection için her bir formu manuel kontrol etmek kolay değil gibi. Zaten bir sürü validation + kontrol olacaktır. Bu zahmetlerden de kurtarıp ayrıca bir sürü fayda daha sağlayacak bir framework kullanmak mantıklı olabilir bu konuda. En azından bütün bu ıvır zıvır ile uğraşmaktansa doğrudan konuya odaklanıp problemini çözebilirsin / işi geliştirebilirsin.

    @PcK0

    Ben olaya clean code olarak bakmamıştım, güzel noktaya değinmişsin. Ayrıca Object Calisthenics prensiplerine de uygun oluyor kod böyle olunca.

    Bknz: ilk iki madde:

    http://williamdurand.fr/2013/06/03/object-calisthenics/


    Sen hiç kaval çaldın mı?
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    PcK0
    PcK0's avatar
    Kayıt Tarihi: 13/Nisan/2007
    Erkek

    Tabi. Temiz kod yazmak iyidir. Gönlü ferahlatır, bakış açısını açar.

    :)


    Sadece bi imza..
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek
    PcK0 bunu yazdı

    Tabi. Temiz kod yazmak iyidir. Gönlü ferahlatır, bakış açısını açar.

    :)

    aynen önceki mesajında verdiğin örnek tarzı bir şey yazmak için bu işe girdim hocam. yoksa if if if else else else ile de işimi görüyordum :) bunun dışında yine düzenli kod yazmak için özellikle return kullanımını keşfedince else'leri rafa kaldırdım :)


    ben de sevgiden yanayım...
Toplam Hit: 966 Toplam Mesaj: 8
php validasyon