Starší komentáře ke článku: Ošetřujeme příspěvky návštěvníků stránek

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: pp21

Datum vložení: 9.11.2002 14:56:47

Rozhodne se necitim byt odbornikem na PHP, ale spoustu vesi bych udelal jinak, doufam, ze daleko jednoduseji.

---------------
1. - Proc psat seznam takto slozite:
---
<?php
$profan[]='hloupý';
$profan[]='hloupy';
...
?>
---
IMHO by bylo daleko snadnejsi pouzit jen
---
hloupý
hloupy
---
A pak si ten soubor nacist do pole pomoci "$profan=file('./badwords.php');". Pak by to asi chtelo celou array projit a pomoci "trim()" odstranit pripadne mezery a konce radku, ktere by tam mohly byt.
A to nemluvim o tom, ze by klidne mohlo stacit psat vsechny slova s diakritikou, pak si jen pomoci PHP vsechny projit, pokud by obsahovaly nejaky znak s diakritikou, pridat je na konec array bez ni.

---------------
2. - Proc pouzivat "strstr()" a jeste k tomu "strtoupper()", kdyz od PHP verze 3.0.6, mame k dispozici funkci "stristr()", coz neni nic jineho, nez "Case-insensitive strstr()".
<a href='http://www.php.net/manual/cs/function.stristr.php' target='_blank'>http://www.php.net/manual/cs/function.stristr.php</a>
A vubec, proc pouzit na zjisteni, zda se jeden retezec nachazi ve druhem funkci "strstr()"? Proc nepouzit "strpos()"?

---------------
3. - Proc pouzivat podminku "(strtoupper($censored)==strtoupper($sWord))", kdyz by bylo vhodnejsi pouzit "(!strcasecmp($censored, $sWord)"?
<a href='http://www.php.net/manual/cs/function.strcasecmp.php' target='_blank'>http://www.php.net/manual/cs/function.strcasecmp.php</a>

---------------
4. - Jsou ty regularni vyrazy v tomto pripade opravdu nutne? Priznam, ze se v nich prilis neorientuji, ale funkce "str_replace()" preci udela totez. Jen tusim, ze neni 'case-insensitive', coz by v tomhle pripade vadilo, takze jsem asi mimo.
<a href='http://www.php.net/manual/cs/function.str-replace.php' target='_blank'>http://www.php.net/manual/cs/function.str-replace.php</a>

Avatar

Autor komentáře: Hynek Horák

Datum vložení: 1.9.2003 22:39:21

Ad. 2 - StrPos má jednu obrovskou nevýhodu - pokud se bude hledaný řetězec vyskytovat na začátku vyhledávaného řetězce, vrátí pozici 0 a vy víte píp jestli tam není nebo je na začátku... Docela jsem se s tím nazlobil než sem se píp a napsal si hstrpos:)

Avatar

Autor komentáře: Pavel Král

Datum vložení: 9.11.2002 18:42:47

Kdo chce vulgární výraz napsat, si způsob, jak obejít jakýkoli filtr, vždycky najde. Stačí napsat slovo proložené tečkami nebo zaměnit jeden ze znaků třeba hvězdičkou. Dokonce si myslím, že čím rafinovanější filtr použijete, tím větší to bude výzva jej překonat.

Avatar

Autor komentáře: vlado

Datum vložení: 9.11.2002 20:54:25

Uplne s vami suhlasim, nema to zmysel. Zbytocne filtrovanie budem tam davat, ked aj tak on to obide. Radsej vobec to nedam a ked bude treba urcity prispevok zmazem s databasy. :-)

Avatar

Autor komentáře: Vlado

Datum vložení: 9.11.2002 23:04:18

no ale toho cloveka co se to poprve pokusi napsat normalne to urcite nepotesi.

Avatar

Autor komentáře: Vlado

Datum vložení: 9.11.2002 23:06:09

jo ja sem jiny vlado nez ten na ktereho odpovidam :)

Avatar

Autor komentáře: Tomáš

Datum vložení: 10.11.2002 13:09:57

Možná to nemá velký smysl, ale jako ukázka je to dobrý... Nemá smysl furt diskutovat, zda to smysl má nebo ne, kdo chce, použije to, kdo ne, nemusí se o to ani zajímat!:o)

Avatar

Autor komentáře: Honza

Datum vložení: 29.8.2003 16:36:15

To je pravda

Avatar

Autor komentáře: Frtacker

Datum vložení: 1.11.2003 12:15:48

A kdo to nepoužije tak to usí smazat! Nebo si musí najmout někoho kdo mu bude o stránky pečovat! :-)

Avatar

Autor komentáře: sbul

Datum vložení: 11.11.2002 9:08:44

Proc je to v sekci HTML, kdyz je to cele v PHP ?

Avatar

Autor komentáře: Jakub Adamus

Datum vložení: 1.8.2003 22:32:28

nechce se mi k tomu psat popis, ale funguje to, ma to svoje mouchy, ale da se to prezit, pouzivam to ve svem chatu, jestli se nekomu chce, tak at to napise do clanku

function sproste($message) {
$fuck=false;
$nc=array();
$newtext="";
$zakazane="!@#$%^&*()_+|\\\"\'[]}{:;./?.,<>-1234567890 ";
$od=array();
$do=array();
for ($i=0; $i<strlen($message); $i++) {
$chr=SubStr($message,$i,1);
$t=true;
for ($x=0; $x<strlen($zakazane); $x++) {
if ($chr==substr($zakazane,$x,1)) { $t=false; }
}
if ($t) {
$nc[]=$i;
$newtext.=$message[$i];
}
}
$newtext=StrTr($newtext,"áäèïéìëíòóöøšúùüýžÁÄÈÏÉÌËÍÒÓÖØŠÚÙÜÝŽ","aacdeeeinoorstuuuyzAACDEEEINOORSTUUUYZ");
$data2=MySQL_query("select * from chat_sproste_slova order by slovo desc");
do { while($f2=MySQL_fetch_array($data2)) {
$find=strpos($newtext,$f2[slovo]);
if (!($find===false)) { $od[]=$find; $do[]=strlen($f2[slovo]); }
}}while(false);
$fuck=false;
if (!empty($od)) {
for ($i=0; $i<count($od); $i++) {
$nah="";
for ($x=0; $x<$do[$i]; $x++) {
$nah.="*";
}
$pred=Substr($newtext,0,$od[$i]);
$po=SubStr($newtext,($od[$i]+$do[$i]));
$newtext=$pred.$nah.$po;
}
$fuckout=$message;
$fuck=true;
for ($i=0; $i<strlen($newtext); $i++) {
$pred=Substr($message,0,$nc[$i]);
$po=Substr($message,($nc[$i]+1));
$in=Substr($newtext,$i,1);
$message=$pred.$in.$po;
}
}
return array($fuck,$message,$fuckout);
}

Avatar

Autor komentáře: Jakub Adamus

Datum vložení: 1.8.2003 22:35:09

PS: funguje i nasledujici:

SPROSTE SLOVO = *************
S--P-R0O1S....Te==Šlóvo = *--*-*0*1*....**==*****

Avatar

Autor komentáře: t

Datum vložení: 26.1.2008 12:01:39

-$zakazane="!@#$%^&*()_+|\\\"…,<>-1234567890 "; -tohle zakázaní na ochranu zdrojového kodování stačí.Ctělo by k tomu udělat článek s vysvětlením.Odstraňování nevhodných (sprostých)slovních výrazů se bude špatně provádět bo žánr těchto výrazů se neustále rozšiřuje a mění.

Avatar

Autor komentáře: Marekzprahy

Datum vložení: 15.8.2003 15:48:07

Před časem mi na stránky chodili skinheadi a kazili knihu návštěv. Tak jsem udělal něco podobného jako je tady, akorát s tím rozdílem, že jsem příspěvek s nevhodným výrazem úplně zakázal publikovat a navíc jsem dotyčnému odebral možnost přidávat příspěvky (ip+cookie). Jako na potvoru mi už půl roku nikdo nic nevhodného nenapsal, jediný, kdo dostal už několikrát "ip ban", jsem byl já :-)))

Avatar

Autor komentáře: xy

Datum vložení: 26.8.2003 20:03:49

Myslím, že tento systém je daleko praktičtější.

>> DE81L0VÉ << jsou všude :-))

Avatar

Autor komentáře: mr.X

Datum vložení: 26.8.2003 13:01:11

Ten uvedený příklad ve článku je opravdu na nic stačí místo hloupý napsat třeba h l o u p ý a je to tam..

Zpět na článek | Úvodní stránka Interval.cz