Lors de la création d’un framadate, si l’utilisateur tape son email et par erreur finit par un espace, le formulaire renvoie un message d’erreur “L’adresse saisie n’est pas correcte !”. Pour la plupart des utilisateurs, c’est incompréhensible parce qu’il est impossible de voir l’erreur - l’email semble correct, pas de caractères particuliers etc.
C’est une issue qui est très simple à résoudre, elle permet donc de rentrer dans le sujet et de mieux comprendre l’architecture de framadate et du fonctionnement de Git.
La fonction trim prend en valeur d’entrée une chaîne de caractères et supprime les espaces en début et fin de chaîne.
J’ai tout d’abord commencé à travailler sur la page où l’erreur était directement générée. J’ai ajouté quelques lignes simples pour voir à quel moment les données étaient envoyées et pourquoi l’erreur était provoquée .
$mail='test@hotmail.fr '; $mail= trim($mail); echo $mail; var_dump($mail); var_dump($title); var_dump($name);
Avec ce code, et en ayant mis en commentaire la remise à 0 des données on obtient toujours l’adresse mail avec des espaces à la fin.
De l’itération précédente, on a conclu qu’il fallait aller chercher dans les classes qui prennent en paramètre le $mail. isValidemail est une fonction dans class/framadate/services/mailService.php qui vérifie et filtre les conditions sur le mail ( présence @, et enlève les caractères du php )
public function isValideMail($mail){ $email=$trim($mail); return filter_var($mail,FILTER_VALIDATE_EMAIL}
Ce code ne marchait pas, tout simplement parce que la classe ne modifiait pas la chaîne, mais faisait simplement une vérification si elle était bien conforme.
La function filterMail prend en entrée une chaîne de caractères , qui retourne vraie si elle est valide selon leFiltre php .
public function filterMail($mail){ $mail=trim($mail); return filter_var($mail,FILTER_VALIDATE_EMAIL); }
Ainsi le message d’erreur n’apparaît plus .
https://framagit.org/framasoft/framadate/merge_requests/269
La contribution a été intégrée.