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

C# Discussion :

Textbox et adresse mail


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Par défaut Textbox et adresse mail
    Salut à tous !

    Me revoilà avec un nouveau problème... oui ça faisait longtemps mais vous me manquiez !

    Voilà, je suis en train de faire un formulaire C# pour enregistrer des clients, et lors de l'enregistrement je demande d'entrer l'adresse mail (jusque là ça va) mais le soucis c'est que je ne doit pas accepter les caractères interdits mais je ne sais pas comment les éviter...

    J'ai commencé par faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!tbx_client_mail1.Text.Contains("mon caractere"))
                    {
                        MessageBox.Show("oh ! Tu t'es trompé");
                        tbx_client_mail1.Text = tbx_client_mail1.Text.Remove(tbx_client_mail1.Text.Length - 1);
                    }
    mais bien sûr il n'y a pas que 1 caractère interdit et je me vois mal tous les écrire...

    Donc je me suis dis "Hey ! pourquoi pas mettre les bons caractères dans la base de données et remplir une liste ?"
    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
    List<string> lesChar = new List<string>();
    ...
    ...
    ...
    private void PageClientCreation_Load(object sender, EventArgs e)
            {
                string requete = "SELECT * FROM caractere";
                CURS cs = new CURS(ChaineConnexion);
                cs.ReqSelect(requete);
                string caractere;
                while (!cs.Fin())
                {
                    caractere = cs.champ("TEXTE").ToString();
     
                    lesChar.Add(caractere);
                    cs.suivant();
                }
                cs.fermer();
    ...
    ...
    ...
    Du coup j'ai essayé de mettre ça sur mon textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void tbx_client_mail1_TextChanged(object sender, EventArgs e)
            {
                int i =0;
                foreach (string element in lesChar)
                {
                    if (!tbx_client_mail1.Text.Contains(element.ElementAt(i)))
                    {
                        MessageBox.Show("oh !");
                        //tbx_client_mail1.Text = tbx_client_mail1.Text.Remove(tbx_client_mail1.Text.Length - 1);
                        i++;
                    }
                }
    ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void tbx_client_mail1_TextChanged(object sender, EventArgs e)
            {
                foreach (string element in lesChar)
                {
                    if (!tbx_client_mail1.Text.Contains(element))
                    {
                        MessageBox.Show("oh !");
                        //tbx_client_mail1.Text = tbx_client_mail1.Text.Remove(tbx_client_mail1.Text.Length - 1);
                    }
                }
    Mais lorsque je rentre un caractère valide il me sort mon message box pour tous les autres dans ma base (logique je sais).

    Donc j'ai besoin de vous, afin de pouvoir supprimer le caractère interdit tout en informant l'utilisateur de sa faute de frappe.

    Tanaes.

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    habituellement pour vérifier la validité du format d'une adresse mail on utilise les expressions régulières.
    Pour trouver la Regex qui va bien demande à google, tu devrais trouver facilement

    Mettre une lsite de caractères valides en DB me parait bien lourdingue.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Par défaut
    Oula !

    ça pique les yeux dès le début...

    Merci quand même pour ma future torture

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Par défaut
    Je n'ai rien dis !

    Voilà une petite vidéo qui pourra vous aider si vous avez le même problème que moi !



    Tanaes.

  5. #5
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Tu vois c'était pas si compliqué que ça
    Perso à chaque fois que j'ai besoin de cette regex je la recherche à nouveau sur le web

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Glaner une pattern sur le net au petit bonheur la chance n'est pas vraiment une bonne idée car il y a à boire et à manger. Et c'est particulièrement le cas en ce qui concerne la vérification du format d'une adresse email car ce format est très complexe et que les énormités sur le sujet pullulent.

    On peut trouver une assez bonne description du format avec plusieurs exemples sur cette page wikipedia qui donne en lien les documents RFC (pour les plus courageux).

    Concernant la pattern utilisée dans cette vidéo:

    Cette pattern ^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$ est assez naïve voire archi-fausse.

    Pour commencer, la même pattern écrite correctement sans captures et échappements inutiles donne:

    ^[\w.-]+@[\w-]+(?:\.\w{2,3})+$.

    En ce qui concerne la partie locale [\w.-]+, pourquoi pas. C'est plutôt restrictif en ce qui concerne les caractères autorisés, mais la plupart des adresses sans tralala devraient passer.

    Maintenant le clou du spectacle: la description du nom de domaine: [\w-]+(?:\.\w{2,3})+$.

    L' auteur de cette pattern suppose (en réalité il ne suppose rien car c'est juste du bricolage) qu'à partir du premier point rencontré on ne peut plus écrire de mots de plus de trois lettres! Résultat: même une adresse aussi basique que toto@mon.domaine.fr ne passera pas (ne parlons pas des domaines en .info), et il ose faire une vidéo avec son ânerie!

    Je comprend bien vue la complexité du format qu'on se tourne vers un compromis raisonnable qui couvrira les formats d'adresse les plus communs. D'ailleurs il n'est pas rare de trouver un code qui se contente juste de tester la présence de l'arobase dans la chaîne (et c'est certainement mieux que de faire n'importe quoi).

    On peut trouver sur le site de microsoft un exemple de validation d'email qui n'est pas trop mal: https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx (à noter qu'elle ne gère ni les commentaires, ni les IPv6). La pattern principale qui vérifie le format, peut être réécrite de cette manière pour être plus efficace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @"^(?>[0-9a-z]+[-!#$%&'*+/=?^`{}|~\w]*(?>\.[-!#$%&'*+/=?^`{}|~\w]+)*(?<=[0-9a-z])|""[^""\\]*(?>\\.[^""\\]*)*"")@"
    + @"(?>(?>[0-9a-z]+[-\w]*\.)+[a-z0-9][a-z0-9-]{0,22}[a-z0-9]|\[\d{1,3}(?>\.\d{1,3}){3}\])$"

Discussions similaires

  1. [VB.NET] mailto adresse mail dans zone de text
    Par wilaya dans le forum ASP.NET
    Réponses: 8
    Dernier message: 22/03/2005, 11h50
  2. [JFormattedTextField ]validité d'une adresse mail
    Par gege2mars dans le forum Composants
    Réponses: 3
    Dernier message: 14/01/2005, 16h55
  3. [VBA][outlook] récupération des adresses mail
    Par arno2004 dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 27/07/2004, 18h48
  4. Cacher l'adresse mail
    Par alain58 dans le forum ASP
    Réponses: 15
    Dernier message: 20/07/2004, 17h06
  5. [VB6] procédure de vérification d'adresse mail ?
    Par ghohm dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/06/2004, 13h05

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