16. september 2006 - 20:03Der er
7 kommentarer og 1 løsning
Tjek database for dublikeringer !
Hej.... Jeg skal bruge en som er istand til at rette nederstående script for mig, da jeg ikke er den hårde programmør....
Det er en nyhedsbrev tilmelding, problemet er bare det er muligt at tilmelde sig 2 gange, derfor skal den først tjekke op på om mail adressen allerede er i databasen, hvis den er skal brugeren få en bedsked med "Du er allerede tilmeldt denne service" og hvis ikke skal han tilføjes til databasen....
If Len(V_ValiderEmail) < 5 Then Valider = False V_Status = "E-mail adressen er for kort." Exit Function End If
' (2) Skal indeholde @ '--------------------------------------------------------------------
If InStr(V_ValiderEmail,"@") = 0 Then Valider = False V_Status = "Der mangler et ""@"" i e-mail adressen." Exit Function End If
' (3) Undgaa "@." og ".@" '-----------------------------------------------------------------
If ((InStr(V_ValiderEmail,"@.") <> 0) OR (InStr(V_ValiderEmail,".@") <> 0)) Then Valider = False V_Status = "Der må ikke være et punktum lige op af et ""@"" i e-mail adressen." Exit Function End If
' (4) Check om der er noget foran @ '-------------------------------------------------------
If Len(Left(V_ValiderEmail,InStr(V_ValiderEmail,"@") - 1)) = 0 Then Valider = False V_Status = "Der mangler noget foran ""@"" i e-mail adressen." Exit Function End If
If InStr(V_ValiderEmail,".") = 0 Then Valider = False V_Status = "En e-mail adresse indeholder mindst eet punktum." Exit Function End If
' (6) Max 3 tegn efter sidste "." '---------------------------------------------------------
If (Len(V_ValiderEmail) - InStrRev(V_ValiderEmail,".") > 3) Then Valider = False V_Status = "Der er for mange tegn efter sidste punktum i e-mail adressen." Exit Function End If
If InStr(V_ValiderEmail,"..") <> 0 Then Valider = False V_Status = "Der mŒ ikke være to punktummer lige op af hinanden i e-mail adressen." Exit Function End If
' (8) Min 2 tegn efter sidste "." '---------------------------------------------------------
If (Len(V_ValiderEmail) - InStrRev(V_ValiderEmail,".") < 2) Then Valider = False V_Status = "Der skal være mindst to tegn efter sidste punktum i e-mail adressen." Exit Function End If
' (9) Ingen "_" efter "@" '-----------------------------------------------------------------
If ((InStr(V_ValiderEmail,"_") <> 0) AND (InStrRev(V_ValiderEmail,"_") > InStrRev(V_ValiderEmail,"@"))) Then Valider = False V_Status = "Der må ikke være en underscore (_) efter ""@""." Exit Function End If
' (10) Tjek for flere "@" '-----------------------------------------------------------------
V_Snabler = 0
For V_i = 1 TO Len(V_ValiderEmail) If Mid(V_ValiderEmail,V_i,1) = "@" Then V_Snabler = V_Snabler + 1 End If Next
If V_Snabler > 1 Then Valider = False V_Status = "E-mail adressen indeholder for mange ""@""." Exit Function End If
' (11) Check V_Domaene ud fra array '-------------------------------------------------------
For V_i = 0 TO UBound(V_UgyldigeDomaener) If V_Domaene = V_UgyldigeDomaener(V_i) Then Valider = False V_Status = "E-mail adressens domæne er ugyldigt." Exit Function End If Next
' (12) Tjek om TLD'en er korrekt '----------------------------------------------------------
For V_i = 0 TO UBound(V_GyldigeEndelser) If V_Endelse = V_GyldigeEndelser(V_i) Then V_GyldigEndelse = True Exit For End If Next
If NOT V_GyldigEndelse Then Valider = False V_Status = "Domæne endelsen (f.eks. "".dk"" el. "".com"") er ikke korrekt." Exit Function End If
' (13) Check hver enkelt tegn '-------------------------------------------------------------
For V_i = 1 TO Len(V_ValiderEmail) If NOT IsNumeric(Mid(V_ValiderEmail,V_i,1)) AND (LCase(Mid(V_ValiderEmail,V_i,1)) < "a" OR LCase(Mid(V_ValiderEmail,V_i,1)) > "z") AND Mid(V_ValiderEmail,V_i,1) <> "_" AND Mid(V_ValiderEmail,V_i,1) <> "." AND Mid(V_ValiderEmail,V_i,1) <> "@" AND Mid(V_ValiderEmail,V_i,1) <> "-" Then Valider = False V_Status = "E-mail adressen indeholder et eller flere ugyldige tegn." Exit Function End If Next
' (14) Adresser der skal ekskluderes (grundet SPAM el. lign.) '-----------------------------
V_Ekskluder = Array("JanEmil@.hotmail.com")
For V_i = 0 TO UBound(V_Ekskluder) If V_ValiderEmail = V_Ekskluder(V_i) Then Valider = False V_Status = "Der kan ikke sendes til den valgte adresse da den er ekskluderet pga. misbrug." Exit Function End If Next
End Function %>
<% if Request.Form("email") <> "" then email = Request.Form("email") If Valider(email) Then set conn = Server.CreateObject("ADODB.Connection") conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/mailliste/database.mdb") If Request.Form("RADIO") = "false" Then conn.Execute("DELETE * FROM maillingliste WHERE email='" & email & "'") V_Status = "Du er nu afmeldt fra Chicken Hosting nyhedsbrev" else on Error Resume Next conn.Execute("insert into maillingliste (email) values ('" & email & "')") On Error GoTo 0 V_Status = "Du er nu tilmeldt Chicken Hostings nyhedsbrev" end if conn.Close set conn = nothing end if end if %>
Du kan indsætte denne funktion i starten af din email-validering: -----------------------------
' (0) Check om den findes i forvejen '------------------------------------------------------ set conn = Server.CreateObject("ADODB.Connection") conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/mailliste/database.mdb") set rs = conn.Execute("select * FROM maillingliste WHERE lcase(email) ='" & V_ValiderEmail & "'") if not (rs.bof or rs.eof) then Valider = False V_Status = "E-mail adressen findes i forvejen." Exit Function End If
' (0) Check om den findes i forvejen '------------------------------------------------------ set conn = Server.CreateObject("ADODB.Connection") conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/mailliste/database.mdb") set rs = conn.Execute("select * FROM maillingliste WHERE lcase(email) ='" & V_ValiderEmail & "'") if not (rs.bof or rs.eof) then Valider = False V_Status = "E-mail adressen findes i forvejen." Exit Function End If
If Len(V_ValiderEmail) < 5 Then Valider = False V_Status = "E-mail adressen er for kort." Exit Function End If
' (2) Skal indeholde @ '--------------------------------------------------------------------
If InStr(V_ValiderEmail,"@") = 0 Then Valider = False V_Status = "Der mangler et ""@"" i e-mail adressen." Exit Function End If
' (3) Undgaa "@." og ".@" '-----------------------------------------------------------------
If ((InStr(V_ValiderEmail,"@.") <> 0) OR (InStr(V_ValiderEmail,".@") <> 0)) Then Valider = False V_Status = "Der må ikke være et punktum lige op af et ""@"" i e-mail adressen." Exit Function End If
' (4) Check om der er noget foran @ '-------------------------------------------------------
If Len(Left(V_ValiderEmail,InStr(V_ValiderEmail,"@") - 1)) = 0 Then Valider = False V_Status = "Der mangler noget foran ""@"" i e-mail adressen." Exit Function End If
If InStr(V_ValiderEmail,".") = 0 Then Valider = False V_Status = "En e-mail adresse indeholder mindst eet punktum." Exit Function End If
' (6) Max 3 tegn efter sidste "." '---------------------------------------------------------
If (Len(V_ValiderEmail) - InStrRev(V_ValiderEmail,".") > 3) Then Valider = False V_Status = "Der er for mange tegn efter sidste punktum i e-mail adressen." Exit Function End If
If InStr(V_ValiderEmail,"..") <> 0 Then Valider = False V_Status = "Der mŒ ikke være to punktummer lige op af hinanden i e-mail adressen." Exit Function End If
' (8) Min 2 tegn efter sidste "." '---------------------------------------------------------
If (Len(V_ValiderEmail) - InStrRev(V_ValiderEmail,".") < 2) Then Valider = False V_Status = "Der skal være mindst to tegn efter sidste punktum i e-mail adressen." Exit Function End If
' (9) Ingen "_" efter "@" '-----------------------------------------------------------------
If ((InStr(V_ValiderEmail,"_") <> 0) AND (InStrRev(V_ValiderEmail,"_") > InStrRev(V_ValiderEmail,"@"))) Then Valider = False V_Status = "Der må ikke være en underscore (_) efter ""@""." Exit Function End If
' (10) Tjek for flere "@" '-----------------------------------------------------------------
V_Snabler = 0
For V_i = 1 TO Len(V_ValiderEmail) If Mid(V_ValiderEmail,V_i,1) = "@" Then V_Snabler = V_Snabler + 1 End If Next
If V_Snabler > 1 Then Valider = False V_Status = "E-mail adressen indeholder for mange ""@""." Exit Function End If
' (11) Check V_Domaene ud fra array '-------------------------------------------------------
For V_i = 0 TO UBound(V_UgyldigeDomaener) If V_Domaene = V_UgyldigeDomaener(V_i) Then Valider = False V_Status = "E-mail adressens domæne er ugyldigt." Exit Function End If Next
' (12) Tjek om TLD'en er korrekt '----------------------------------------------------------
For V_i = 0 TO UBound(V_GyldigeEndelser) If V_Endelse = V_GyldigeEndelser(V_i) Then V_GyldigEndelse = True Exit For End If Next
If NOT V_GyldigEndelse Then Valider = False V_Status = "Domæne endelsen (f.eks. "".dk"" el. "".com"") er ikke korrekt." Exit Function End If
' (13) Check hver enkelt tegn '-------------------------------------------------------------
For V_i = 1 TO Len(V_ValiderEmail) If NOT IsNumeric(Mid(V_ValiderEmail,V_i,1)) AND (LCase(Mid(V_ValiderEmail,V_i,1)) < "a" OR LCase(Mid(V_ValiderEmail,V_i,1)) > "z") AND Mid(V_ValiderEmail,V_i,1) <> "_" AND Mid(V_ValiderEmail,V_i,1) <> "." AND Mid(V_ValiderEmail,V_i,1) <> "@" AND Mid(V_ValiderEmail,V_i,1) <> "-" Then Valider = False V_Status = "E-mail adressen indeholder et eller flere ugyldige tegn." Exit Function End If Next
' (14) Adresser der skal ekskluderes (grundet SPAM el. lign.) '-----------------------------
V_Ekskluder = Array("JanEmil@.hotmail.com")
For V_i = 0 TO UBound(V_Ekskluder) If V_ValiderEmail = V_Ekskluder(V_i) Then Valider = False V_Status = "Der kan ikke sendes til den valgte adresse da den er ekskluderet pga. misbrug." Exit Function End If Next
End Function %>
<% if Request.Form("email") <> "" then email = Request.Form("email") If Valider(email) Then set conn = Server.CreateObject("ADODB.Connection") conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/mailliste/database.mdb") If Request.Form("RADIO") = "false" Then conn.Execute("DELETE * FROM maillingliste WHERE email='" & email & "'") V_Status = "Du er nu afmeldt fra Chicken Hosting nyhedsbrev" else on Error Resume Next conn.Execute("insert into maillingliste (email) values ('" & email & "')") On Error GoTo 0 V_Status = "Du er nu tilmeldt Chicken Hostings nyhedsbrev" end if conn.Close set conn = nothing end if end if %>
Tak ! Ja det virker at den tjekker op nu.... Men der er jo en knap der bruges til at tilmelde med, og en til at afmelde med. Og hvis man bruger knappen afmeld, siger den os at e-mail adressen finde....
Aha, ja, det ka jeg da se :D.. Ikke så smart ;). Men du kan jo gøre sådan noget her:
if request.form("radio") = "true" then ' (0) Check om den findes i forvejen '------------------------------------------------------ set conn = Server.CreateObject("ADODB.Connection") conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/mailliste/database.mdb") set rs = conn.Execute("select * FROM maillingliste WHERE lcase(email) ='" & V_ValiderEmail & "'") if not (rs.bof or rs.eof) then Valider = False V_Status = "E-mail adressen findes i forvejen." Exit Function End If end if
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.