$newmessage = censorWords($find,$message);
Mais dans $page tu concatènes $message.
$page .= " <b>$newnom</b> ($newmail)<br> le: $d<br> $newmessage<br><hr>\r\n";]
je pense à une chose, cela peut-il venir du code de repérage des insultes qui s'arrêterait en ayant trouvé une réponse ?function censorWords($find=array(),$text=null){
$replace = ' **** ';
return preg_replace($find,$replace,$text);
}
/*liste des mots a filtrer ou expression */
$file = 'guestbook.txt';
$find = array(
'/ggggggg gg gggggg\s/i',
'/ggg\s/i',
'/ggggggg\s/i',
'/gg ggggggg\s/i',
'/ggggggggggggggggggg\s/i',
);
$newmail = censorWords($find,$mail);
$newnom = censorWords($find,$nom);
$newmessage = censorWords($find,$message);
qu'en penses tu ?
<?php
/**
* censure
* @param array $bl
* @param string $text
* @return mixed
*/
function censorWords($bl, $text) {
if (!is_array($bl)) {
trigger_error('La liste des mots à censurer doit être un tableau!', E_USER_WARNING);
return false;
}
$replace = ' **** ';
return str_ireplace($bl, $replace, $text);
}
/**
* nettoie un tableau
* @param array $array
*/
function sanitizeArray($array) {
if (!is_array($array)) {
trigger_error('Tableau obligatoire en entrée !', E_USER_WARNING);
return false;
}
$final = [];
foreach ($array as $key => $value) {
// si magic_quote activée stripslashes
if (get_magic_quotes_gpc() === true) {
$value = htmlspecialchars(stripslashes($value));
}
// remplacement caractères spéciaux par entité html.
$value = htmlspecialchars($value);
$final[$key] = censorWords([], $value);
}
return $final;
}
// Nettoyage des données
$data = sanitizeArray($_POST);
$d = date("d/m/Y H:i:s");
$page = ' <span style="font-weight:bold;">'.$data['nom'].'</span> ('.$data['email'].') <br/> le: '
.$d.'<br/> '.$data['message'].'<br/><hr/>'.PHP_EOL;
//On rajoute le message dans le fichier
file_put_contents("/htdocs/livredor/guestbook.txt", $page, FILE_APPEND | LOCK_E);
include("guestbook.php");// pour ?