Hallo,
Ik ben bezig met het maken van een forum. Ik wil hier graag een scheldwoordenfilter in zetten maar het lukt me niet helemaal. Heeft iemand een goed filter?
Ik heb telkens geprobeert om het filter te include in de "post"pagina is dit ook wel handig??

graag hulp
Je kunt het beter bij het uitlezen doen...
Misschien heb je wel een keer iets als scheldwoord gerekend en is ie dat niet, dan staat ie censored in de db. Als je hem bij het eruithalen pas doet blijft ie gewoon in de database bestaan :)
je kunt dit doen met [php]preg_match[/php] of [php]preg_match_all[/php] ;)
veel makkelijker:


<?php
    $tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
    $woorden = array('woorden','die','niet','mogen');
    foreach($woorden as $woord) {
        $tekst = str_replace($woord,"***",$tekst);
    }
?>
Kwou al zeggen, regex is vet, maar gebruik het alleen wanneer het nodig is, is namelijk is een stuk slomer dat een simpele string replace.

:) als je het scriptje van niek copiert zorg dat je de typfout niet mee copiert
(->verbeterde code van niek!<-

<?php
    $tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
    $woorden = array('woorden','die','niet','mogen');
    foreach($woorden as $woord) {
        $tekst = str_replace($woord,"***",$tekst);
    }
?> 
Dizzy schreef op 27.03.2007 20:32
:) als je het scriptje van niek copiert zorg dat je de typfout niet mee copiert
(->verbeterde code van niek!<-

<?php
    $tekst = "de tekst met scheldwoorden, die voor sterretjes vervangen worden";
    $woorden = array('woorden','die','niet','mogen');
    foreach($woorden as $woord) {
        $tekst = str_replace($woord,"***",$tekst);
    }
?> 


Goed gezien :) Heb het aangepast.
Baarr schreef op 27.03.2007 20:32
Kwou al zeggen, regex is vet, maar gebruik het alleen wanneer het nodig is, is namelijk is een stuk slomer dat een simpele string replace.
En in dit geval kun je dus beter wel kiezen voor een regex, aangezien een str_replace niet voldoet.

Een eenvoudige str_replace vervangt namelijk ook dat 'scheldwoord' als het een onderdeel van een langer woord is. Dus ook van een woord dat eventueel wel een toegestane betekenis heeft.
Dat ligt eraan, je kunt eventueel je string replace ook uitvoeren en checken op een spatie ervoor en erna. Of nog beter, ze inclusief spaties in de array zetten.

Als je echt complexe dingen gaat maken, dus ook checken of k-u-t gebruikt word of weet ik veel wat voor exotische zaken, dan is een regex wellicht beter.
ik Heb het script geprobeerd te gebruiken maar het lukt me niet. kan iemand zeggen wat ik fout doe?

<?php
error_reporting(E_ALL);
include 'functions.php';

beginPage();
verbind();

print '<h3 align="center">Bekijk de onderwerpen:</h2>';

if(isset($_GET['verplaats_topic']) && isset($_SESSION['administrator']))
{
verplaats_topic((int) $_GET['topic_id'], (int) $_GET['forum_id']);
}

if(isset($_GET['close_topic']) && isset($_SESSION['administrator']))
{
if(!$rMySQLQuery = mysql_query("UPDATE `topics` SET `topic_locked` = '1' WHERE `topic_id` = '".$_GET['topic_id']."' LIMIT 1;"))
{
message_die();
}

@header('Location: view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id']);
}

if(isset($_GET['open_topic']) && isset($_SESSION['administrator']))
{
if(!$rMySQLQuery = mysql_query("UPDATE `topics` SET `topic_locked` = '0' WHERE `topic_id` = '".$_GET['topic_id']."' LIMIT 1;"))
{
message_die();
}

@header('Location: view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id']);
}

function get_user_info($iUserId)
{
if(!$rMySQLQuery1 = mysql_query("SELECT * FROM members WHERE member_id = '".$iUserId."'"))
{
message_die();
}

if(mysql_num_rows($rMySQLQuery1) == 0)
{
trigger_error('Invalid user ID given: <b>'.$iUserId.'</b>',E_USER_ERROR);
}

return mysql_fetch_assoc($rMySQLQuery1);
}

if(!isset($_GET['topic_id']))
{
die('<p align="center">Het commando \'topic_id\' ontbreekt!</p>');
}

if(!is_numeric($_GET['topic_id']))
{
die('<p align="center">Het commando \'topic_id\' moet een nummer zijn!</p>');
}

if(!isset($_GET['forum_id']))
{
die('<p align="center">Het commando \'forum_id\' ontbreekt!</p>');
}

if(!is_numeric($_GET['forum_id']))
{
die('<p align="center">Het commando \'forum_id\' moet een nummer zijn!</p>');
}

if(!$rMySQLQuery1 = mysql_query("SELECT topic_id,forum_id,topic_locked FROM topics WHERE topic_id = '".$_GET['topic_id']."' AND forum_id = '".$_GET['forum_id']."'"))
{
message_die();
}

if(mysql_num_rows($rMySQLQuery1) == 0)
{
die('<p align="center">Het onderwerp dat je zoekt bestaat niet! <a href="index.php" class="link">Index</a></p>');
}

if(!$rMySQLQuery2 = mysql_query("SELECT forum_naam,forum_id FROM forums WHERE forum_id = '".$_GET['forum_id']."'"))
{
message_die();
}

$aFetch = mysql_fetch_assoc($rMySQLQuery2);

print '<p align="center"><a href="index.php?style='.$_GET['style'].'" class="link">Forum Index</a> >> <a class="link" href="view_forum.php?style='.$_GET['style'].'&forum_id='.$_GET['forum_id'].'">'.stripslashes($aFetch['forum_naam']).'</a></p>';

if(!$rMySQLQuery3 = mysql_query("SELECT * FROM replys WHERE topic_id = '".$_GET['topic_id']."'"))
{
message_die();
}

print '<p align="center"><u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u></p>';
print '<center><table border="0">';


while($aFetch = mysql_fetch_assoc($rMySQLQuery3))

{
$a_Fetch = mysql_fetch_assoc(mysql_query("SELECT member_id,member_username FROM members WHERE member_username = '".$aFetch['reply_poster']."'"));
$aUserInfo = get_user_info($a_Fetch['member_id']);
$aFetch['reply_poster'] = htmlspecialchars(stripslashes($aFetch['reply_poster']));

if(!$rMySQLQuery4 = mysql_query("SELECT member_handtekening,member_username,member_id,member_posts FROM members WHERE member_username = '".$aFetch['reply_poster']."'"))
{
message_die();
}

$aFetch2 = mysql_fetch_assoc($rMySQLQuery4);
settype($aFetch2['member_posts'],'integer');

$aFetch['reply_message']= str_replace('<','&lt',$aFetch['reply_message']);
$aFetch['reply_message']= str_replace('>','&gt',$aFetch['reply_message']);
$aFetch['reply_message']= nl2br(stripslashes($aFetch['reply_message']));
$aFetch['member_rank'] = '<b>'.get_user_rank($aFetch2['member_posts'],$aFetch['reply_poster']).'</b>';
$aFetch['reply_message']= str_replace(
array(':-)',':-(',':D',':P',';)'),
array('<img src="Images/blij.gif">','<img src="Images/sad.gif">','<img src="Images/YAY.gif">','<img src="Images/lol.gif">','<img src="Images/knipoog.gif">'),
$aFetch['reply_message']);
?>
<link href="css/tekst.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
background-color: #000000;
}
a:link {
color: 66ff33;
}
a:visited {
color: 66ff33;
}
a:hover {
color: 0000ff;
}
a:active {
color: 0000ff;
}
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: 66ff33;
}
-->
</style>
<tr><td> <?php
$tekst = 'reply_message';
$woorden = array(kut,lul,sukkel,eikel,mietje);
foreach($woorden as $woord) {
$tekst = str_replace($woord,"***",$tekst);
}
?>

<span class="tekst"><u>Gepost door: <a href='bekijk_profiel.php?style=<?php echo $_GET['style'] ?>&user_id=<?php echo $aFetch2['member_id'] ?>' class='link'>
<?php echo $aFetch['reply_poster'] ?></a>&nbsp;(<?php echo $aFetch['member_rank'] ?>)</u></span></td><td></td></tr><tr><td><span class="tekst"><font size='+1'><?php echo $aFetch['reply_message'] ?></font> </span> <hr></td></tr>
<tr><td class="tekst"><?php echo $aFetch2['member_handtekening'] ?></td></tr>
<span class="tekst"><?php print '<tr>'; if(isset($_SESSION['administrator'])) print '<td><input type="button" value="Close Topic" class="text" onclick="location = \'?style='.$_GET['style'].'&close_topic=1&topic_id='.$_GET['topic_id'].'&forum_id='.$_GET['forum_id'].'\'">&nbsp;<input type="button" value="Open Topic" class="text" onclick="location = \'?style='.$_GET['style'].'&open_topic=1&topic_id='.$_GET['topic_id'].'&forum_id='.$_GET['forum_id'].'\'"></td><td>'.list_forum_ids().'</td>'; if(isset($_SESSION['gebruiker'])) print '<td><input type="button" class="text" value="Nieuw Topic" onclick="location = \'new_topic.php?style='.$_GET['style'].'\'"></td><td><input type="button" value="Reply" class="text" onclick="location = \'#reply\'"></td>'; if(isset($_SESSION['gebruiker']) && $_SESSION['gebruiker'] == $aFetch['reply_poster']) print '<td><input type="button" value="Bewerken" class="text" onclick="location =\'bewerk.php?forum_id='.$_GET['forum_id'].'&style='.$_GET['style'].'&reply_id='.$aFetch['reply_id'].'\'"></td>'; print '</tr>'; ?>

<?php
echo '<tr><td><u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u></td></tr>';
}
echo '</table>';
print '<p align="center"><u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</u></p>';

$aFetch3 = mysql_fetch_assoc($rMySQLQuery1);
if($aFetch3['topic_locked'] == '1')
{
print '<center><strong>Topic gesloten.</strong>';
}
else
{
if(isset($_SESSION['gebruiker']))
{
echo '<a name="reply">';
include 'new_reply.php';
echo "</a>";
}
}
endHTML();
?>
</span>
Wat gaat er mis? Krijg je ook foutmeldingen? Want die alleen al verstellen ons sneller wat er mis is dan zo'n heel script.

Probeer ook eens hetvolgende bovenaan je code te zetten (om fouten zichtbaar te maken)

<?php
    error_reporting(E_ALL);
    ini_set('display_errors', true);
?>

Reageren