IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Nettoyer une chaine de caractères de ses élements invisibles à l'oeil


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 467
    Par défaut Nettoyer une chaine de caractères de ses élements invisibles à l'oeil
    bonjour,

    il est arrivé un bug étrange dans notre système.
    J'ai fait un script qui crée des comptes à base de l'adresse email des gens dont les dossiers sont saisis par une tiers personne sur MAC qui reçoit des dossiers dans un fichier mise en forme (par Page ou Word je présume).
    Cette personne a fait un copier-coller d'une email à partir du document vers notre système et il y avait un caractère caché (de mise en forme je suppose ? sinon ptete une intrusion possible?).
    Bref, ni le PHP ni mysql n'a évincé ce caractère, et donc la personne n'arrivait jamais à s'identifier car la chaine comparée enregistrée en DB était toujours différente de la chaine entrée à la main par l'utilisateur :

    Nom : php_car_cache.png
Affichages : 127
Taille : 998 octets

    Du coup, comment détecter ce LS et l'enlever automatiquement avant de l'enregistrer en DB ?
    Je pensais avoir corrigé les pn de CR/LN et espace invisible trimmés mais visiblement, il reste ce cas !

    Dommage qu'on ne puisse pas dire à la BD (mysql) de ne pas accepter autre chose que de l'alpha (mon champ est en string)
    Idem pour PHP pour une variable, dommage qu'on puisse pas la typer en stricte chaine de caractère visibles.

    Avez-vous une idée pour résoudre ce souci par le code ?
    Pour l'instant je n'ai trouvé comme solution que de dire à la secrétaire de retaper ou de coller sans mise en forme avec son MAC.

    Bonne journée.. de réflexion

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Hello,

    Vous pouvez déjà tester si la chaine est un email valide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filter_var($email, FILTER_VALIDATE_EMAIL)
    Et si ce n'est pas le cas, peut-être faire un preg_replace de tout ce qui n'est pas un caractère autorisé par vide.

  3. #3
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 467
    Par défaut
    effectivement !

    Nom : php_car_cache_val.png
Affichages : 103
Taille : 21,3 Ko

    je me tape sur la tête du "pourquoi ça n'a pas été fait en amont" déjà !

    Ajoutons à cela, que l'UI UX pourrait être amélioré (côté framework ou côté code natif du browser ou OS) car quand on sélectionne un texte dans une case de manière partielle ou de manière total, il n'y a aucune différenciation visuelle qui montre à l'utilisateur qu'il peut y avoir qqchose derrière :

    sélection partielle :
    Nom : selection_partielle.png
Affichages : 106
Taille : 4,9 Ko

    sélection totale :
    Nom : selection_total.png
Affichages : 109
Taille : 6,1 Ko

    Un ptit indicateur "texte sélectionné incomplet" serait appréciable pour titiller l'utilisateur...

    Notre outil utilise les frameworks adminLT3 et Bootstrap4, peut-être que ce serait une amélioration à soumettre à la communauté de développeurs...

    En tout cas merci pour l'idée de correction

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Citation Envoyé par clavier12AZQSWX Voir le message
    il n'y a aucune différenciation visuelle qui montre à l'utilisateur qu'il peut y avoir qqchose derrière
    On peut apercevoir un espace derrière la sélection totale qui n'est pas dans la sélection partielle. C'est léger, mais présent.



    Bon à savoir pour les caractères autorisés dans les emails : le "+", qui permet de faire des alias, donc ne pas oublier de le garder.

  5. #5
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 467
    Par défaut
    oui oui j'ai bien vu l'espace en plus. ce que je disais, c'est que lorsqu'on sélectionne tout un texte, il n'y a rien qui dit "hey ho il reste un blanc, un saut de lire, un retour chariot caché qui n'est pas sélectionné"

    en améliorant l'uX, on pourrait imaginer un texte dans le ptit coin en indice (à la manière de la racine carré) pour dire 99% du champs est sélectionné comme ça, cela permettrait de titiller l'utilisateur sur "WTF, il est où ce 1% manquant..?!!".

    Dans tous les cas, je suis bien sûr conscient que l'amélioration peut être "corrigé" en backend avant d'être déclarée en frontend...

    ça me rappelle ces formulaires en ligne où on copy/paste des numéros de CB où certains prenne le soin de virer les espaces et d'autres de les laisser et dire à l'utilisateur que le n° CB est incorrect...
    C'est un dilemme d'UX ...

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 332
    Par défaut
    Bonjour,
    Navré de relancer la discussion mais il suffit de faire un trim s'il y a un espace au début ou a la fin. Parce qu'une chaine de connexion avec espaces ... aled hein
    Côté back ca doit aussi être géré mais dans tout les cas faire une vérif côté front pour l'experience user c'est tjrs mieux que rien . Enfin je pense ...
    Belle journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Turbo Pascal] Fonction qui permet de nettoyer une chaîne de caractères
    Par med.ycf dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 05/03/2014, 23h11
  2. formater et nettoyer une chaine de caractère
    Par redah75 dans le forum Langage
    Réponses: 11
    Dernier message: 10/05/2012, 12h09
  3. nettoyer une chaine & Expression régulière
    Par jumbay dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/10/2008, 09h18
  4. Nettoyer une chaine contenant des caractères spéciaux?
    Par adil_vpb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/05/2007, 15h47
  5. Réponses: 2
    Dernier message: 05/10/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo