Problème avec mon formulaire
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.. :cry:
Voici mon code:
Code:
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é.';
}
?> |
Si vous avez une idée je suis preneur :P
Merci d'avance pour votre aide