|
Je bezoekers interactiemogelijkheden gunnen is wel goed, maar niet alle bezoekers zijn even vriendelijk. Sommige gebruiken en misbruiken gastenboeken en andere interactiemogelijkheden om allerlei vunzigheden op het publiek los te laten.
Als webmaster (van een deftige website) kun je dat natuurlijk niet zomaar laten gebeuren. Wanneer je zo'n bericht ziet, verwijder je dat dan ook zo snel mogelijk. Toch is deze situatie verre van ideaal; je kunt immers niet dag en nacht je website in het oog houden. Je zou dan ook een methode moeten vinden die er automatisch voor zorgt dat een aantal aanstootgevende termen niet kunnen ingevoerd worden. We hebben dus nood aan een scheldwoordenfilter. Om zo'n scheldwoordenfilter te maken moeten we eerst zelf een lijstje maken van allerlei woorden die we niet willen toelaten in berichten. In dit voorbeeld willen we dat de woorden "sex", "fuck" en "hoer" niet in een bericht kunnen worden gepost. Voert iemand toch deze termen in, dan worden deze vervangen door sterretjes. Te blokkeren woordenlijst aanleggen We gaan dit script in de vorm van een functie gieten. Zo hoeven we de lijst van scheldwoorden slechts één keer op te stellen en kunnen we de functie zo vaak toepassen dan nodig. Het script ziet er zo uit: <?php function filter($string="") { //scheldwoordenfilter $string = str_replace("sex","****",$string); $string = str_replace("fuck","f***",$string); $string = str_replace("hoer ","****",$string); return $string; } ?> Wij hebben hier nu enkele scheldwoorden opgesomd, maar je kunt natuurlijk zelf ook nog regels toevoegen. Variabelen aanpassen De woorden die we opgegeven hebben, moeten exact hetzelfde geschreven worden om geblokkeerd te worden. In de praktijk betekent dat dat het woord sEx niet zal tegengehouden worden. Daarvoor moeten we we de functie eregi_replace() gebruiken. Het i'tje achteraan duidt op case insensitive. Het gebruik van hoofdletters zal dus genegeerd hebben en dat is net wat we hier nodig hebben. Je kunt eventueel ook gebruik maken van de functie str_ireplace() die geïntroduceerd is in PHP versie 5. De code ziet er dus als volgt uit: <?php function filter($string="") { //scheldwoordenfilter $string = eregi_replace("sex","****",$string); $string = eregi_replace("fuck","f***",$string); $string = eregi_replace("hoer ","****",$string); return $string; } ?> Het toepassen van deze functie gebeurt op deze manier: <?php echo filter($bericht); ?> Het bericht (dat we bijvoorbeeld uitlezen uit een database) wordt in een variabele $bericht gestopt en vervolgens door onze functie filter() gehaald bij het weergeven op het scherm. Alle scheldwoorden die voorkomen, worden vervangen door sterretjes. Resultaat Als iemand toch deze woorden gebruikt in een bericht, kan dit er zo uitzien: F***, door die scheldwoordenfilter kan ik de woorden **** en **** niet meer op een website plaatsen.
|