Avatar billede heloo Nybegynder
21. september 2004 - 22:48 Der er 11 kommentarer og
2 løsninger

serveerside email validering

jeg har en session som gerne skulle undeholde en emailadresse.
men hvordan kan jeg for en sikkerheds skyld validere den i min c# kode ??
Avatar billede arne_v Ekspert
21. september 2004 - 22:50 #1
Regular expression måske ?
Avatar billede jakobandersen Nybegynder
21. september 2004 - 22:51 #2
Avatar billede snepnet Nybegynder
21. september 2004 - 23:56 #3
Ved ikke om du allerede har fikset det på linket, men hvis det ikke er tilfældet kan du lige få et lille eksempel med en sessionvariabel du checker i forhold til et regulært udtryk.

using System.Text.RegularExpressions;

// "sessionvariabel"
private String ShouldBeAnEmail
{
  get
  {
    return (object)Session["email"] != null ? (string)Session["email"] : String.Empty;
  }
  set
  {
      Session["emial"] = value;
  }
}

// pattern til brug ved kontrol af om der er tale om en emailadresse
string pattern = "^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$"


// når du så skal test din variabel kan du gøre det sådan her :

RegEx reg = new RegEx(pattern);

if(reg.IsMatch(ShouldBeAnEmail))
  // det er en emailadresse
else
  // det er ikke en emailadresse

det benyttede pattern har har jeg fra "the regulator" som kan hentes her : http://royo.is-a-geek.com/iserializable/regulator/

mvh
(koden er bare skrevet herude, så der kan være smuttere i den)
Avatar billede snepnet Nybegynder
21. september 2004 - 23:58 #4
Hov - jeg har f.eks. skrevet Session["email"] på forskellige måder :o)
Det går nok bedre sådan her :

// "sessionvariabel"
private String ShouldBeAnEmail
{
  get
  {
    return (object)Session["email"] != null ? (string)Session["email"] : String.Empty;
  }
  set
  {
      Session["email"] = value;
  }
}
Avatar billede heloo Nybegynder
22. september 2004 - 00:01 #5
det ser perfekt ud snepnet, jeg prøver lige imorgen ;)
Avatar billede arne_v Ekspert
22. september 2004 - 00:02 #6
if(Regex.IsMatch(Session["email"], "regex udtryk"))
Avatar billede arne_v Ekspert
22. september 2004 - 00:04 #7
Og regex check på email adresser er kun 99.9% sikkert, da der ikke er nogen
standard for det foran @.

Jeg har i anden anledning brugt den noget simplere:

"((\\w+)|(\\w+\\.\\w+))@((\\w+\\.\\w+)|(\\w+\\.\\w+\\.\\w+)|(\\w+\\.\\w+\\.\\w+\\.\\w+))"
Avatar billede snepnet Nybegynder
22. september 2004 - 00:35 #8
Det er en vanesag... Jeg er ikke så glad for at have "navn"-givne (som f.eke.s Session["et-eller-andet-en-eller-anden-har-fundet-på"]) spredt rundt omkring.
Men staticmetoden RegEx.IsMatch(...) er klart at foretrække.
mvh
Avatar billede heloo Nybegynder
26. september 2004 - 00:52 #9
har brugt denne:if(Regex.IsMatch((string)Session["mail"], pattern))
det virker perfekt, send svar begge 2..
Avatar billede snepnet Nybegynder
26. september 2004 - 09:05 #10
ok :o)
Avatar billede arne_v Ekspert
26. september 2004 - 09:10 #11
ditto
Avatar billede heloo Nybegynder
26. september 2004 - 12:43 #12
tak for hjælpen, nu skal jeg bare lære Regular expression syntaksen at kende ;-)
vi ses
Avatar billede c-sharp Nybegynder
06. april 2005 - 13:53 #13
Jeg har prøvet de forslag der er blevet smidt her, men der er en fejl behæftet email adresse jeg ikke synes den fanger. Der er hvis man indsætter _ i domænenavnet

eks.

c-sharp@exp_as.dk

Jeg har så prøvet med følgende som jeg ikke har kunnet finde "huller" i endnu:

string moenster = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
@"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
@".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";

Det er iøvrigt fundet her: http://www.codeproject.com/aspnet/Valid_Email_Addresses.asp
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester