Résolution d'une issue 1 : #237
Description de l'issue
Lien
Texte
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.
Justification du choix
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.
Solution apportée
La fonction trim
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.
Démarche des recherches
Itération 1 : travail sur create_poll.php
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.
Itération 2 : mail services
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.
Itération 3 : input services
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 .
Merge request
https://framagit.org/framasoft/framadate/merge_requests/269
La contribution a été intégrée.