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

Développement SQL Server Discussion :

Valider une adresse email [Débutant(e)]


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Valider une adresse email
    Bonjour à vous, les experts.

    Le benêt (moi) rencontre un souci à vous soumettre.
    Merci de ne pas rire trop fort

    Voilà la situation :Je viens d'hériter d'une base de données (serveur : SQLServer 2008R2) sur laquelle je vais développer des applications.
    Cette base est, à mon sens, conçue en dépit du bon sens sur de nombreux aspects, mais... pour l'instant, je ne vais rien y toucher.
    Hier, un utilisateur a eu un process de bloqué parce que quelqu'un avait réussi à saisir (ou importer ???) une adresse mail contenant des caractères accentués.

    Et les question :
    1. Quelles solutions existent pour empêcher cette situation de se reproduire ?L'idéal serait de permettre l'importation de données, ou la saisie, et de remplaecr automatiquement les caractères accentués (accents, trémas, tilde, ...) par des caractères sans ces symboles abscons)
    2. Comment mettre cela en place dans une base de données qui existe déjà ?


    Merci d'avoir pris le temps de me lire.

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Hier, un utilisateur a eu un process de bloqué parce que quelqu'un avait réussi à saisir (ou importer ???) une adresse mail contenant des caractères accentués.
    Quel type de process ?

    A+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Bonjour,
    Quel type de process ?
    A+
    Merci de m'avoir lu et de répondre.

    En fait, c'est un truc très bête qui s'est produit...
    L'utilisateur a extrait toutes les adresses email, pour faire un envoi en nombre avec Outlook, et il s'est fait jeter avec une erreur du client outlook, car une adresse mail contenait un tréma.
    Cette erreur dans le process des applications actuelles n'a pas de rapport direct avec SQLServer. Mais, comme ce process est amené à être relancé très régulièrement, et que je découvre SQLServer, je me dis qu'il doit bien y avoir un 'truc' ou quelque chose à faire pour pouvoir empêcher des adresses mail invalides d'arriver dans le champ, que ce soit en saisie ou en importation d'ailleurs, et donc éviter que cette erreur ne se reproduise. D'autant qu'à priori, ils se sont amusés à disséminer des champs Email un peu partout dans cette base (je rappelle que je la découvre, donc... pas taper ! )

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Ok alors oui vous avez les contraintes de vérification qui utilise une fonction à base de regexp en SQLCLR ou en OLE automation.

    Un filtre RegExp de ce style pourrait vous aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DECLARE @regex NVARCHAR(100) 
    SET @regex = N'^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$'
    et quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE dbo.PEOPLE ( 
    name VARCHAR(25) NOT NULL 
    , emailaddress VARCHAR(255) NOT NULL 
    , CONSTRAINT PEOPLE_ck_validemailaddress CHECK ( dbo.RegExValidate( emailaddress, N'^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$' ) = 1 ) 
    )
    ++

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    OK, on se rapproche, je pense de la réponse.
    Donc, si je suis bien ce que vous me dites, je dois chercher du côté de 'contraintes de validations' (J'imagine m'orienter vers les CONSTRAINT CHECK ) et de SQLCLR (Oui, ben là... google va être mon ami... j'espère) pour comprendre comment mettre en place ces deux lignes de code.
    L'OLE Automation me tente moins pour le moment (si j'ai bien compris) car je voudrais vraiment que ce soit le serveur qui valide les données.

    Par contre, ce que je (crois) savoir des contraintes de validation, c'est qu'elles valident, ou pas, mais en aucun cas qu'elles ne transforment.

    • Cela implique-t-il qu'il y ait rejet des données fausses dans le cas d'un import ? Ce serait moyen pour moi, car pas transparent pour l'utilisateur...
    • Si oui, n'y a-t-il pas une procédure quelconque (j'ai entendu parler de trigger, de procédures stockées, etc. tant de mots...) qui permettraient plutôt une modification "à la volée", et ce, quel que soit la méthode employée pour intégrer des données dans cette base ?




    [EDIT]
    Ah ! Vous avez édité votre message
    Donc, pour la première partie, j'avais pas trop mauvais, c'est bien vers un CONSTRAINT CHECK qu'il me faut regarder... à priori.
    Merci !

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/08/2014, 19h14
  2. controle de saisie d'une adresse email valide
    Par nassing dans le forum jQuery
    Réponses: 1
    Dernier message: 26/05/2011, 14h52
  3. Vérification syntaxique d'une adresse email
    Par Tchupacabra dans le forum Access
    Réponses: 5
    Dernier message: 14/12/2005, 08h35
  4. (msn) validité d'une adresse email
    Par t26 dans le forum Messagerie instantanée
    Réponses: 2
    Dernier message: 10/09/2005, 13h05
  5. [langage] vérifier une adresse email
    Par GMI3 dans le forum Langage
    Réponses: 10
    Dernier message: 19/10/2003, 18h06

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