Bonsoir!
J'ai un problème dans mon formulaire avec la fonction trim(), j'aimerais que les espaces rentré par l'utilisateur dans les textes de saisies soit supprimés avant que j'effectue les tests mais sans résultat..
Quand je rentre par exemple comme identifiant " R" sachant que l'identifiant doit comporter 3 caractères au minimum, grâce à la fonction trim() ce dernier ne devrait pas être valide et pourtant si..
Voici mon code:
Si vous avez une idée je suis preneur
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
75
76
77
78
79
80
81
82
83
84 <?php function validerPassword($PasswordATester) { return (strlen($PasswordATester) >= 3) ? sha1('Gr@1n2s3l1' . md5($PasswordATester) . 'gRaIn2$eL2') : false; } function fonctionErrorIdentifiant($identifiantATester) { if(strlen($identifiantATester) < 3) { $error='Votre identifiant doit être égale ou plus grand que 3 caractères'; } elseif(strlen($identifiantATester) > 20) { $error='Votre identifiant ne doit pas excédé plus de 20 caractères'; } else { $error='Cet identifiant comporte des caractères non autorisés.'; } return $error; } function trim_value($value) { $value = trim($value); } $options = array( 'Identifiant' => array( 'filter' => FILTER_VALIDATE_REGEXP, //fait un preg_match() en arrière plan. 'options' =>array( 'regexp' => ('#^[a-z0-9àáâãäçèéêëìíîïñðòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝ._ \'-]{3,20}$#i') ) ), 'Password' => array ( 'filter' => FILTER_CALLBACK, //on crée un filtre. 'options' => 'validerPassword'//On appelle la fonction "validerPassword" pour tester si le mot de passe à le bon format. ), 'Email' => FILTER_VALIDATE_EMAIL //Valider l'adresse e-mail. ); array_walk($_POST, 'trim_value'); $resultat = filter_input_array(INPUT_POST, $options); if($resultat != null)//Si le formulaire a bien été posté. { //Enregistrer des messages d'erreur perso. $messageErreur = array( 'Identifiant' => fonctionErrorIdentifiant($_POST['Identifiant']), 'Email' => 'Vous avez inséré une adresse email non valide.', 'Password' => 'Le mot de passe n\'est pas valide, il doit comporter au minimum 3 caractères.' ); $nbrErreurs = 0; ?> <ul> <?php foreach($options as $cle => $valeur) //Parcourir tous les champs voulus. { if(empty($_POST[$cle])) //Si le champ est vide. { echo '<li> Veuillez compléter le champ requis « ' . $cle . ' ».</li><br/>'; $nbrErreurs++; } elseif($resultat[$cle] == false) //S'il n'est pas valide. { echo '<li>' .$messageErreur[$cle] . '</li><br/>'; $nbrErreurs++; } } ?> </ul> <?php if($nbrErreurs == 0) { echo 'Bonjour ' . $resultat['Identifiant'] . ' !<br/> '; echo 'Ton adresse de messagerie est bien ' . $resultat['Email'] . '.<br/>'; echo 'Ton mot de passe est ' . $resultat['Password'] . '.<br/>'; } } else { echo 'Vous n\'avez rien posté.'; } ?>
Merci d'avance pour votre aide
Partager