Bonjour à tous,

J'ai un souci concernant le contrôle d'un Regex. Lorsque je met un <script>, ou autre caractère non autorisé, ma regex est censée stopper le script avec un die() et ne rien insérer dans la BDD. Elle marche parfaitement sur tous les champs qui l'utilise à part sur un ! je comprends pas pourquoi

Là où ça ne fonctionne pas
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
 
public function update_presentation()
	{
		if ( isset($_POST['content']) && !empty($_POST['content']) ) {
			$presentation = htmlspecialchars($_POST['content']);
 
			if ( RegexControl ::authorizeParagraphe($_POST['content']) ) {
				$compteur_mots = str_word_count($presentation);
				if ( $compteur_mots >= 30 ) {
					if ( $compteur_mots <= 65 ) {
 
						$param = array(
							"presentation" => $presentation
						);
 
						$this -> homeManager -> update($param);
						die("Modification effectuée avec succès !");
 
					}
					else {
						die("Erreur: nombre de mots supérieur à la limite autorisée (65 max)");
					}
				}
				else {
					die("Erreur: nombre de mots insuffisants (" . $compteur_mots . "). Le texte doit contenir au moins 30 mots");
				}
			}
		}
		else {
			die("Erreur: la variable est vide et/ou n'existe pas");
		}
	}
La regex

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
public static function authorizeParagraphe($input){
		$re = '/^[\w\s,\-"\'.():?!ÉÈêéèàîùç$\/]+$/ixm';
		if ( preg_match($re , $input) ) {
			return true;
		}
		else {
			die ("Le texte contient des caractères interdits");
		}
	}