Skocz do zawartości

Cenzura słów w formularzach [PHP]


zerocool

Rekomendowane odpowiedzi

Potrzebuję zrobić cenzora z pól formularza, oraz blokadę IP

Wszystko musi opierać się na definiowaniu zmennych w osobnym pliku, lub ewentualnie w ciągu (słowo1, słowo2, słowo3) niestety nie mogę wykorzystać bazy SQL mogę się tylko opierać na pikach tekstowych.

chodzi mniej więcej o coś takiego :

$sciezka= zablokowane_slowa.txt
$sciezka2 = zablokowane_ip.txt
$sciezka3 = zablokowane_inne.txt

$ciag = szukanie słowa($sciezka, $sciezka2, $sciezka3)

if (($pole_forularza = $ciag) || ($pole_formularza2 = $ciag )) {echo "";}
else { dalej }

albo

$zablokowane_ip = (ip1, ip2, ip3, ip4)
$zablokowane_slowa = (słowo1, słowo2, słowo3, słowo4)

if (($pole_formularza = $zablokowane_ip) || ($pole_formularza = $zablokowane_slowa)) {echo "blokada";}
else {dalej} 

oczywiście jestem otwarty na inne sugestie rozwiązań, dzięki z góry

serce.gifKocham Cię | Życie po Ślubie | Psychopatologia

Popełniłeś tylko jeden błąd ... jaki ? ... RAMBO !

Odnośnik do komentarza
Udostępnij na innych stronach

Pierwsze co mi przychodzi do głowy, to wykorzystanie funkcji in_array - czyli zapisujesz sobie dane np. ip w pliku jako tablicę. Następnie wartość przesłaną z formularza sprawdzasz przy pomocy funkcji in_array - czy występuje w tablicy, jeżeli występuje, to blokujesz wykonanie skryptu, a jak nie, to puszczasz dalej :D

Niestety, in_array rozróżnia wielkość liter, więc dobrze by było, gdybyś przed sprawdzeniem np. zamienił wszystkie litery wprowadzone przez usera na małe i w takiej też postaci trzymał je w pliku tekstowym.

Jeżeli chcesz blokować zakresy ip, to uśmiechnij się ładnie do Erbita, z tego co mówił, napisał do tego funkcję :D Pozdrawiam

Dała matka rozum? To kombinuj.

Odnośnik do komentarza
Udostępnij na innych stronach

...napisał do tego funkcję...

dokładniej funkcję do blokowania zakresów ( a nie jednego IP) choć oczywiście można też za jej pomocą blokować pojedyńcze zakresy - niemniej do bezcelowe.

Funkcja jest tu gdzieś upubliczniona.

[edyta]

Jesli Ciebie intereruje zacznij od tego topiku -> https://www.forum.optymalizacja.com/index.php?s...indpost&p=68334 a na następnej stronie jest to o czym mowa.

Zas co do odczyty pliku o ile sie nie pomylilem to:

$dane = explode(chr(13),fread(fopen("nazwa_pliku", "r"), filesize("nazwa_pliku")));

$dane bedzie zawieralo tablice gdzie kazda linia bedzie osobnym elementem.

Musisz tylko zwrócić uwage na to czy koniec linii to chr(13) czy chr(10) bo w roznych sytemach koniec lini jest roznie zapisywany.

[edyta2]

:) szybciej bedzie chyba tak:

$dane = file('zanwa pliku');

to tworzy tablice taką samą jak wyzej ale moze zawierać znaki końca lini, których trzeba by się pozbyć. Szczegóły tu -> https://pl2.php.net/manual/pl/function.file.php

[edyta3] (ostatnia)

a znaki konca lini mozesz obciąć funkcją rtrim() -> https://pl2.php.net/manual/pl/function.rtrim.php

Amen

Odnośnik do komentarza
Udostępnij na innych stronach

Jak człowiek szuka czegoś prostego to się znajduje 100 wersji i każda za skomplikowana :)

Mi chodzi o naprawdę prostą rzecz, plik z zablokowanymi słowami (ręcznie wprowadzany), plik z zablokowanymi adresami ip (także ręcznie wprowadzany) i warunek który wywali komunikat że słowo jest zablokowane.

W tej chwili definiuję co chwila $pole = pupa || $pole = pupa2 || $pole = pupa3

A widzę to tak :

$zablokowane_słowo = lista słów ALBO plik.txt

IF ($zablokowane słowo = pole formularza1) LUB ($zablokowane słowo = pole formularza2)
to ECHO "TO SŁOWO JEST ZABLOKOWANE"

i wszystko :)

serce.gifKocham Cię | Życie po Ślubie | Psychopatologia

Popełniłeś tylko jeden błąd ... jaki ? ... RAMBO !

Odnośnik do komentarza
Udostępnij na innych stronach

$file = file('slowa.txt');
foreach( $file as $word )
{
 if( stristr( $word, $formularz ) )
 {
	  $error = 1;
  } #ten warunek ignoruje wielkość liter i pozwala przeszukiwać całe zdania, a nie tylko porównywać wyrazy
}
if( $error == 1)
{
echo 'blad';
}

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

Z góry przepraszam za słowa :hello:

Moja wersja (mod czegos z sieci).

<?
// Usage:  This function return false if a bad word is detect.
//
// if (!CheckMSG($MSG))
//	 echo "Bad word detected";
// else
//	 echo "no bad words detected.
//


function CheckMSG($the_msg) {

$badwords = array("arse","arsehole","ass","ass muncher","assmuncher","buttmuncher","butmuncher",
					"butt muncher","but muncher","asshole","asstooling","asswipe","b!tch","b17ch",
					"b1tch","bastard","beefcurtins","bi7ch","bitch","bitchy","boiolas","bollocks",
					"breasts","brown nose","bugger","butt pirate","c0ck","cawk","chink","clitsaq",
					"cock","cockbite","cockgobbler","cocksucker","cum","crap","cunt","dago","daygo",
					"dego","dick","dick wad","dickhead","dickweed","douchebag","dziwka","ekto","enculer",
					"faen","fag","faggot","fart","fatass","feg","felch","ficken","fitta","fitte",
					"flikker","fok","fu*k","fark","fu***r","fucking","fuckwit","fuk","fuking",
					"futkretzn","fux0r","gook","h0r","handjob","helvete","honkey","hore","hump","injun",
					"kawk","kike","knulle","kraut","kuk","kuksuger","kurac","ku**a","langer","masturbation",
					"merd","motherfucker","motherfuckingcocksucker","mutherfucker","nepesaurio","nigga",
					"nigger","nonce","nutsack","one-eyed-trouser-snake","penis","picka","pissant",
					"pi**a","politician","prick","puckface","pule","pussy","puta","puto","rimjob",
					"rubber","scheisse","schlampe","schlong","screw","shit","shiteater","shiz",
					"skribz","sk******n","slut","spermburper","spic","sp*******j","splooge","spunk",
					"tatas","tits","titty","toss the salad","tossthesalad","tosser","tosspot",
					"twat","twatty","unclefucker","vagina","vittu","votze","wank","wanka","wanker","wankers",
					"wankstain","whore","wichser","wop","yed","queer","shi!t","d4mn","phuck","dyke", "gay",
					"fekoff", "fek", "fuking", "arsehole", "fiut", "pedał", "qr*a", "cwel","ku**a", "kurwi",
					 "ku**y", "kurwo","jebac", "jebac", "je***y", "je***i", "je***e", "jebie", "jebie", "jebaka", 
					 "jebak±", "", "", "pi****l", "pierdala", "pi*d", "piLd", "ruchac", "ruchac", "ruchal",
					  "ruchal", "ruchan", "ci*a", "ci**e", "ci*y", "cip±", "ci*e", "ci*e", "cipo", "cipci", "cipka",
					   "cipce", "cipki", "cipk±", "cipke", "cipke", "cipko", "cipek", "ocipi", "ku**s", "pierdziel",
						"osra", "sr*c", "sr*c", "sral", "sral", "sraniec", "srane", "szczac", "szczac", "szczal", "szczal",
						 "szczane", "szczyn", "pi****l", "pierdól", "suka", "suk±", "suke", "suke", "lachoci±g", "lachociag",
						  "burdel", "cwel", "dup", "udupi", "gówn", "gown", "gówienk", "gowienk", "skurczysyn", "su*****n","<",">");

$badlist_size = count($badwords);
trim($the_msg);
strip_tags($the_smg);

//test the text before removing characters.
for ($i=0; $i < $badlist_size; $i++)
{
	if (ereg($badwords[$i], $the_msg)) {
		return false;
	}
}	

for ($i=0; $i < $badlist_size; $i++)
{
	if (ereg(strrev($badwords[$i]), $the_msg)) {
	return false;
	}
}

//remove special characters
$the_msg = eregi_replace("[^a-z]+", "", $the_msg);

//test the text after removing characters.
for ($i=0; $i < $badlist_size; $i++)
{
	if (ereg($badwords[$i], $the_msg)) {
	return false;
	}
}
for ($i=0; $i < $badlist_size; $i++)
{
	if (ereg(strrev($badwords[$i]), $the_msg)) {
	return false;
	}
}	

return true;
}
?>

Odnośnik do komentarza
Udostępnij na innych stronach

Bardzo ładnie sprawdza się w działaniu skrypt MMP :) wielkie dzięki o to chodziło - szybkie i proste

dodatkowo niewiele zajmuje więc nie wpłynie to zbytnio na wielkość dokumentu

edit :

co prawda poradziłem sobie z tym w inny sposób,

ale należało by dodać jeszcze coś w przypadku kiedy pole jest puste, ponieważ wywala komunikat

" stristr empty .... itd. "

serce.gifKocham Cię | Życie po Ślubie | Psychopatologia

Popełniłeś tylko jeden błąd ... jaki ? ... RAMBO !

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności