Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Php string kontrol

Konu, 'PHP' kısmında izmiralem tarafından paylaşıldı.

  1. izmiralem

    izmiralem Aktif Üye

    Kayıt:
    7 Şubat 2010
    Mesajlar:
    290
    Beğenilen Mesajlar:
    32
    Meslek:
    Bilgisayar Teknik Servis Hizmt.
    Şehir:
    izmir
    Arkadaşlar merhaba,

    Web siteme gelen ilanları bazı kontrollerden geçirip, ilan başlığı ve açıklaması içerisinde yasaklı kelimelerin geçmesini önlemeye çalışıyorum fakat nedense istediğim sonucu alamıyorum.

    Kod örneği :

    PHP:
    $sansur_kelime = array("satilik","satılık","SATILIK","SATİLİK","ücretli","ucretli","ÜCRETLİ","UCRETLI","fiyat","FIYAT","TL","tl","satiyorum","satıyorum","SATIYORUM","SATİYORUM","SATIŞ","satis","satış");

    function 
    sansur($haystack$needles$offset 0) {
    foreach (
    $needles as $n) {
         if (
    stripos($haystack$n$offset) !== false)
    if(
    $offset==0){return 1;}else{
         return 
    stripos($haystack$n$offset);
    }
    }
    return 
    false;
    }

    $detay_kontrol sansur($ilandetay$sansur_kelime);

    Localde yaptığım testlerde sorun yok, ancak sitede nedense hala ilan detayına "ucretli" yazabiliyorlar.

    Local ile site üzerinde ki php versiyolanlarından mı fark ediyor yoksa kodlarda mı bir sıkıntı var anlayamadım.
     
  2. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    899
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    php bilmiyorum ancak fikir vermesi açısından bir şey yazayım.

    Metin içeriği kontrolleri, daha sağlıklı olması açısından.

    Önce gelen metnin tüm türkçe karakterleri latine ve küçük harfe çevrilir. Böylece satis, SATIŞ ve satış vb.. ayrı kontrol etmen gerekmez. Sadece satis kelimesi kontrolu yeterli olur.
    Sonra harf hariç tüm karakterler temizlenir. Böylece kurnazlarıda haklarsın. satış yerine sat-ış, satı_ş, sat|ş yazanları.

    Sonra benzeride kullanılmaması gereken bazı kelimeler için kök kontrolu(örneğin "yönetici" kelimesini aramak yerine "yönet" ararsın böylece yönetici, yönetim, yönetirim, yönetebilirim gibi bi sürü kelime yakalanır),
    diğer kelimeler içinde tam kontrol yapılır.

    Hiç kaçsın istemiyorsan, yüzde kontrolu yapılır. Yasak kelimeye yüzde kaç benziyor. Tabi bu işlem süreyi anormal artırıyor, kullanım tavsiye etmem, 2 kez yaptım, Ankara'dakinde 3 günün sonunda işlemi kestik, Bursa'daki sorunsuz olarak bir kaç saatte bitti.:rolleyes:

    Ve yasaklı kelime bulunmuşsa işlem kesilmez kullanıcıya hissettirilmez, yönetime ve polise ayrıca CIA ve BM ye haber verilir, kullananın ailesinede haber verilerek naaptın denir.o_O
     
    dinlex ve izmiralem bunu beğendi.
  3. worthwolf

    worthwolf Aktif Üye

    Kayıt:
    4 Mayıs 2009
    Mesajlar:
    270
    Beğenilen Mesajlar:
    1
    function guvenlik($veri){
    $text=trim($veri);
    $KotuKarakterler=array("kötü kelime1","kötü kelime2","kötü kelime3","kötü kelime4","kötü kelime5");
    $ayir=str_replace($KotuKarakterler," ",$text);
    return addslashes(strip_tags($ayir));
    unset($veri,$text,$KotuKarakterler,$ayir);
    }
     
    izmiralem bunu beğendi.
  4. izmiralem

    izmiralem Aktif Üye

    Kayıt:
    7 Şubat 2010
    Mesajlar:
    290
    Beğenilen Mesajlar:
    32
    Meslek:
    Bilgisayar Teknik Servis Hizmt.
    Şehir:
    izmir
    @sedirAğacı tşk dediğiniz yöntem ile yaptım daha başarılı oldu. @worthwolf sizede teşekkür ederim yazdığınız fonksiyon çalışıyor ancak ben yasaklı kelimelerin silinmesini değil kullanıcıya uyarı verdirmek istedim ki kuralları öğrensinler bir daha ki ilan girişlerinde bunu dikkate alsınlar diye.

    Fonksiyonun verimli olarak çalışır hali aşağıdadır belki işine yarayan olur ise buyursun :

    Php string sansür uygulaması :

    Fonksiyonumuz büyük harf ve türkçe karakterleri tamamen küçük harfe ve ingilizce karaktere dönüştürmek amaçlıdır.

    Kod:
    function strtolower_ing($deger)
    {
    $deger = str_replace("Ç","c",$deger);
    $deger = str_replace("Ğ","g",$deger);
    $deger = str_replace("I","i",$deger);
    $deger = str_replace("İ","i",$deger);
    $deger = str_replace("Ö","o",$deger);
    $deger = str_replace("Ü","u",$deger);
    $deger = str_replace("Ş","s",$deger);
    $deger = str_replace("ç","c",$deger);
    $deger = str_replace("ğ","g",$deger);
    $deger = str_replace("ı","i",$deger);
    $deger = str_replace("ö","o",$deger);
    $deger = str_replace("ü","u",$deger);
    $deger = str_replace("ş","s",$deger);
    $deger = strtolower($deger);
    $deger = trim($deger);
    return $deger;
    } 
    Aşağıda ki fonksiyonumuz yasaklı kelimeleri ve string içerisinde kelime arayan fonksiyonu içerir.

    Kod:
    $sansur_kelime = array("satilik","satis","ucretli","fiyat","tl");
    
    function sansur($haystack, $needles, $offset = 0) {
    foreach ($needles as $n) {
         if (stripos($haystack, $n, $offset) !== false)
    if($offset==0){return 1;}else{
         return stripos($haystack, $n, $offset);
    }
    }
    return false;
    }
    Aşağıda ki kod ile yasaklı kelimenin string içerisinde kaçıncı sırada olduğunu bulabilirsiniz.

    Kod:
    $baslik = "Kontrol edilecek cümle bu değişkende yer alır.";
    echo sansur(strtolower_ing($baslik), $sansur_kelime);
    
    Yukarıda ki kodlar da eğer yasaklı kelime bulunursa kaçıncı sırada olduğunu döndürür, fakat yasaklı kelime cümle içerisinde geçmiyor ise boş döner hiç bir şey dönmez. Kontrollerinizi buna göre yapabilirsiniz.
     
    sedirAğacı ve dinlex bunu beğendi.