İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Yasak kelimeleri tam anlamıyla engelleme

murdock

0
İyinet Üyesi
Katılım
28 Mart 2005
Mesajlar
1,273
Reaction score
3
Merhaba, benim site içi mesajlaşma sistemimde küfür argo reklam gibi yasak kelmeleri mesaj atarken engellemek istiyorum.Birçok yol denedim ama üyeler mesela salak kelimesini s a l a k veya SALAK veya s-a-l-a-k gibi kullanıyor bu yüzdende engelin bir faydası olmuyor mağlesef.Hem bu olayı rahatlıkla çözebileceğim hemde onlara uyarı çıkarabileceğim şekilde bir kod istiyorum.

irc serverlarda mesela s*a*l*a*k şeklinde filtreye ekleyince biri s-a-l-a-k olarakda eklese engelliyor ama bunu phpde bulamadım.

gönderilen yazı $txt den alınacak ve yasak kelime varsa arada boşluk tire vs.. veya büyük küçük s-A-lak gibide olsa engelleyecek bir filtre düzenlenebilirmi? Bu konuda bilgili arkadaşlar yardım edebilirse sevinirim.
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
PHP:
$words = explode(' ',$txt);
$c = count($words) - 1;

$filter = array('-','_','*');
$change = array('','','');
$ban = array('salak','dombili');

  for ($i=0; $i<=$c; $i++) {
  $current_word = str_replace($filter,$change,$words[$i]);
   
     foreach ($ban as $banwords) {
       if (eregi($banwords,$current_word)) {
       $words[$i] = '******';
       break;
       }
     }

   }

$words = implode(' ',$words);
echo $words;

Filtre çoğaltılabilir. Bu metodda space filtreye eklenemez, yani "sal ak" yakalanmayacaktır.
S*alak d-ombili gibi kullanımları yakalar.

Space için daha gelişmiş regular expression kullanımı gerekli.
 

murdock

0
İyinet Üyesi
Katılım
28 Mart 2005
Mesajlar
1,273
Reaction score
3
Ben aşağıdakini geliştirdim uğraşıp.Sanırım bu kodla filtereye eklediğim tüm kelimeleri filtreyebilicem.Eksik veya hatam varmı?


PHP:
$text = "ya niye salaklık yapıyorsun";
$url=strtolower($text);

$url = str_replace('Ö', 'o', $url);
$url = str_replace('İ', 'i', $url);
$url = str_replace('Ü', 'u', $url);
$url = str_replace('Ğ', 'g', $url);
$url = str_replace('Ş', 's', $url);
$url = str_replace('Ç', 'c', $url);

$url = str_replace('ö', 'o', $url);
$url = str_replace('ı', 'i', $url);
$url = str_replace('ü', 'u', $url);
$url = str_replace('ğ', 'g', $url);
$url = str_replace('ş', 's', $url);
$url = str_replace('ç', 'c', $url);

$url = str_replace(' ', '', $url);
$url = str_replace('-', '', $url);
$url = str_replace('.', '', $url);
$url = str_replace('_', '', $url);
$url = str_replace('/', '', $url);
$url = str_replace('+', '', $url);
$url = str_replace('"', '', $url);
$url = str_replace(',', '', $url);
$url = str_replace('*', '', $url);


$yasak=array("salak", "aptal", "esek");


for($i=0; $i<count($yasak); $i++) {
if (stristr($url, $yasak[$i])) { 

$hata = "Mesajınızda yasaklanmış bir kelime bulundu!<br>Argo,reklam vb. rahatsız edici mesajlar oyundan uzaklaştırılma sebebidir.";

}else{
}
 
} 
if($hata != ""){

	$tim = time() + 600;

echo "<font color=red>$hata<br><br>10 dakika ceza aldınız.10 dakika boyunca mesaj gönderemeyeceksiniz.</font>";
exit();
}
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Doğru ama beklediğin sonuç ne, kelimeyi sansürleyip geri kalanını bastırmak üzere düşündüm ben. Tümüyle mesajı engelleyeceksen zaten sorun yok, spaceleri, sembolleri kaldirip karsilastirma yaparsin, match ederse engellersin. Sen bosluklari bastan kaldirdigin icin cumleyi tekrar kisinin yazdigi sekle geri donduremezsin.
 

murdock

0
İyinet Üyesi
Katılım
28 Mart 2005
Mesajlar
1,273
Reaction score
3
haklısın belki tam anlatamadım.istediğim o kelimeyi silip göndermesin olayı değil.tam anlamıyla belirttiğim argoları yakalayıp göndermesini engellesin.önceden kısmen engelliyordu ama şöyle bir durum çıkıyordu ve yine sıkıntı yaşanıyordu.. adam yazmış mesela *** çocuğu.. sonra şikayet geliyor anlıyor tabi.neyse hallettim sanırım yinede teşekkür ederim yardımın için.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst