Autor | Zpráva | ||
---|---|---|---|
Rellik Profil |
#1 · Zasláno: 22. 3. 2011, 20:04:21 · Upravil/a: Rellik
Zdravím,
potřeboval bych poradit s funkcí, která zkontroluje odesílaný formulář slovo po slovu a pokud se vyskytne nějaké nežádoucí (sprosté) slovo, aby script vypsal hlášku, že takovou zprávu nelze odeslat. Slova z formuláře dám do pole, které chci pak pomocí jiného pole porovnat a pokud se vyskytne aspoń jedna shoda, tak to dál nebude pokračovat a form se neodešle. Zkoušel sem to tak: $zprava_array = explode( " ", $obsah ); // $obsah je posílán z formu $ochrana = array('nežádouci','nebo','sprosté','slova'); if (in_array($ochrana,$zprava_array)) { echo 'Zpráva obsahuje nepovolené nebo neslušné výrazy a nebude odeslána!!'; } else { //pokračování scriptu... Bohužel to není tak jednoduché jak sem původně myslel a nějak mě nenapadá, jak to jinak provést. Pokud dosadím určité slovo přímo if (in_array("nežádoucí",$zprava_array)) tak to jde. Díky za odpověď nebo nějaké nakopnutí. |
||
Alphard Profil |
#2 · Zasláno: 22. 3. 2011, 20:08:52
Musel byste to projít cyklem., nebo použít jiné funkce pro práci s poli. Pořád to ale bude hledat přesnou shodu.
Druhá možnost je sestavit regulár, do kterého můžete dát třeba jen část slova. Více slov můžete spojit pomocí nežádoucí|slova|a|výrazy. Přesnou syntaxi si určitě najdete. |
||
Rellik Profil |
#3 · Zasláno: 22. 3. 2011, 20:35:59
Díky za odpověď,
cyklem to nepůjde, protože už předtím je tam pár věcí, které jsou filtrovány - znaky < >, dělení dlouhých slov, změna www nebo http na aktivní odkaz... Pokud to bude hledat pouze stejné výrazy mi nějak moc nevadí. Poradíte mi aspoň s touto možností? Díky |
||
Časová prodleva: 13 let
|
0