Toen ik mijn gastenboek tutorial had geplaatst kwamen er enkele reacties over de scheldwoorden filter, en in 1 daarvan stond het volgende:


Edit: een beter oplossing zou ik persoonlijk vinden is een systeem dat administrators/moderators bericht geeft van een bericht dat mogelijk scheldwoorden bevat en die dan te kunnen verwijderen of iets dergelijks.


nu had ik een idee maar ik vroeg me af of dit wel een goed begin is in de goede richting


<?php
// De verboden woorden
$forbidden = array('kut', 'lul', 'homo', 'gay', 'pijpen', 'beffen');

// Als er een scheldwoord in het bericht zit
if(in_array($bericht, $forbidden))
{
	// Stuur de mail
	$msg = mail('[email protected]',  // Aan
				'scheldwoorden filter',  // Onderwerp
				'Er zijn mogelijk scheldwoorden aangetroffen in het bericht met het volgende id: "'.$eenidhier'"',  // Bericht
				'FROM: [email protected]'); // Van
	
	// Als er een fout is opgetreden in de mail
	if($msg == FALSE)
	{
		echo 'Helaas, er is een fout opgetreden';
	}
}
?>


Is dit iets in de goede richting of totaal niet?
gr
Ik zou het niet in een functie doen.
Ik zou gewoon het bericht checken op scheldwoorden als het wordt toegevoegd.
Als dat het geval is meteen een mail sturen.
Je begrijpt in_array nog niet helemaal. Je bericht zal waarschijnlijk 1 string zijn. Bij in array is het eerste argument een array en tweede argument een string, net andersom dus. Om het dus werkend te krijgen zal je de $bericht string moeten gaan exploden om een array met alle losse woorden te krijgen, en een foreach loop om te checken. Zal zo in edit even laten zien wat ik bedoel .

En ik kan je bij voorbaat een tip geven, gebruik Swiftmailer, zelf emails sturen met de ingebouwde mail functie van php word vaak een drama.

edit:

<?php

$testbericht = "Hier is een bbericht met wat woorden en een kut scheeldwoord homo erin";
$forbidden = array('kut', 'lul', 'homo', 'gay', 'pijpen', 'beffen');
$stukken = explode(" ", $testbericht);
foreach ($stukken as $key => $woord){
$badwords = false;
if(in_array($forbidden, $woord)){
$badwords = true;
}
}
if ($badwords){
//hier met swiftmailer gaan email
}
//optioneel
else{
echo 'jeej, bericht geen scheldwoorden';
}
?>

Natuurlijk houd je de eeuwige discussie of filters wel zullen werken. Als "homo" niet werkt word het wel h0mo, of één van de andere 20 vversies.
Overigens zal dit allemaal niet werken, wat nou als ik dit doe:

Je bent een luul! Nee, wacht, nog erger, een h o m o!


Zowel luul als h o m o zullen blijven staan / niet opgemerkt worden.
GaMer13 schreef op 09.09.2009 17:41
Overigens zal dit allemaal niet werken, wat nou als ik dit doe:

Je bent een luul! Nee, wacht, nog erger, een h o m o!


Zowel luul als h o m o zullen blijven staan / niet opgemerkt worden.


En als jij nou even gewacht had op de beloofde edit voor je onnodige posts maakt ;)
Hey Afra bedankt ik ga het verder ontwikkelen en eff uitleg voormezelf er bij zetten ;)

gr

Reageren