Bonjour à toutes et à tous,
Je viens vers vous pour vous présenter mon problème actuel sur la sécurisation de mon livre d'or.
historiquement parlant, j'ai ajouté stripslashes pour que mon texte soit lisible avec à ç é à et ' et non \' .
Ensuite j'ai donc ajouté htmlspecialchars pour éviter l'envoi de code html dans le message, voici mon code.
Mon problème vient du fait que mon module anti-insulte ne trouve qu'un seul mot et ne recherche pas les autres ( je parle de ceux qui sont renseignés évidement dans la liste ),
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <head> <meta name="description" CONTENT=""> <meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" > <meta name="keywords" CONTENT=""> <head> <title></title> </head> <body> <?php //Ouverture du fichier en écriture $fp = fopen("/htdocs/livredor/guestbook.txt",a); //On convertit les caracteres html echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1')); $nom = htmlspecialchars(stripslashes($_POST['nom'])); $mail = htmlspecialchars(stripslashes($_POST['mail'])); $message = htmlspecialchars(stripslashes($_POST['message'])); $d = date ( "d/m/Y H:i:s" ); 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); $page = ""; $newmail = $mail; $newnom = $nom; $newmessage = $message; $page .= " <b>$newnom</b> ($newmail)$d<br> le: $d<br> $newmessage<br><hr>\n"; //On rajoute le message fwrite($fp,"$page" ,strlen("$page")); //fermeture du fichier fclose($fp); ?> <?php include("guestbook.php"); ?> </body> </html>
voici mon code :
j'ai testé avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 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);
et j'obtient sur mon test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $newmessage = 1; echo $newmessage; var_dump($newmessage);
Merci par avance à toutes celles ou tout ceux qui m'aiderontpetit test pour reprendre l'encodage de la fonction htmlspecialchars combinée avec la fonction stripslashes. petit test code html <a href="#top">top</a> test des caractères spéciaux : "'"'((__àç_é&=)àç, et des insultes **** et en plus tu es un ( modéré manuellement)string(288) "
bonne journée à tous
Partager