webForumDet fria alternativet

CheckEmail

0 svar · 902 visningar · startad av Razor

RazorMedlem sedan maj 200067 inlägg
#1

Följande funktion skall användas för validering av epost-adresser som t.ex. knappats in i ett formulär.

Funktionen kan med fördel läggas i en seperat fil som inkluderas mha SSI.

Observera att koden nedan kan innehålla oavsiktliga radbrytningar!

<%
' Funktion för att validera emailadresser.
Public Function CheckEmail(emailString)

' Deklarationer.
Dim emailLength
Dim atNoCheck
Dim atPos
Dim lastDotPos
Dim emailCheck
Dim i

' Initieringar.
emailCheck = True

' Omvandlar emailsträngen till gemener.
emailString = LCase(emailString)

' Kollar längden på emailsträngen. Sparar längden.
emailLength = Len(emailString)
If emailLength \< 6 Then
	emailCheck = False
	CheckEmail = emailCheck
	Exit Function
End If

' Kontrollerar om det finns ETT "@" inom tillåtet 
' intervall i emailsträngen. Om så lagras positionen.
For i = 2 To emailLength - 4
	If Asc(Mid(emailString, i, 1)) = 64 Then
		atNoCheck = atNoCheck + 1
		atPos = i
	End If
Next
If atNoCheck \<\> 1 Then
	emailCheck = False
	CheckEmail = emailCheck
	Exit Function
End If

' Kontrollerar att tecknen till vänster om "@" är tillåtna tecken.
For i = 1 To atPos - 1
	If Asc(Mid(emailString, i, 1)) \< 97 Or Asc(Mid(emailString, i, 1)) \> 122 Then
		If Asc(Mid(emailString, i, 1)) \< 48 Or Asc(Mid(emailString, i, 1)) \> 57 Then
			If Not (Asc(Mid(emailString, i, 1)) = 45 Or Asc(Mid(emailString, i, 1)) = 46 Or Asc(Mid(emailString, i, 1)) = 95) Then
				emailCheck = False
				CheckEmail = emailCheck
				Exit Function
			End If
		End If
	End If
Next

' Kontrollerar att tecknet närmast till höger om "@" är alfanumeriskt eller "\_".
If Asc(Mid(emailString, atPos + 1, 1)) \< 97 Or Asc(Mid(emailString, atPos + 1, 1)) \> 122 Then
	If Asc(Mid(emailString, atPos + 1, 1)) \< 48 Or Asc(Mid(emailString, atPos + 1, 1)) \> 57 Then
		If Not Asc(Mid(emailString, atPos + 1, 1)) = 95 Then
			emailCheck = False
			CheckEmail = emailCheck
			Exit Function
		End If
	End If
End If

' Kontrollerar att resterande tecken till höger om "@" är tillåtna tecken.
For i = atPos + 2 To emailLength
	If Asc(Mid(emailString, i, 1)) \< 97 Or Asc(Mid(emailString, i, 1)) \> 122 Then
		If Asc(Mid(emailString, i, 1)) \< 48 Or Asc(Mid(emailString, i, 1)) \> 57 Then
			If Not (Asc(Mid(emailString, i, 1)) = 45 Or Asc(Mid(emailString, i, 1)) = 46 Or Asc(Mid(emailString, i, 1)) = 95) Then
				emailCheck = False
				CheckEmail = emailCheck
				Exit Function
			End If
		End If
	End If
Next

' Kontrollerar att det finns minst en punkt efter "@" samt att det inte 
' finns två eller fler punkter på rad. Sparar positionen för sista punkten.
For i = atPos + 2 To emailLength - 1
	If Asc(Mid(emailString, i, 1)) = 46 Then
		lastDotPos = i
		If Asc(Mid(emailString, i + 1, 1)) = 46 Then
			emailCheck = False
			CheckEmail = emailCheck
			Exit Function
		End If
	End If
Next
If lastDotPos = 0 Then
	emailCheck = False
	CheckEmail = emailCheck
	Exit Function
End If

' Kontrollerar att det finns två eller tre 
' tecken efter sista punkten.
If emailLength - lastDotPos \< 2 Or emailLength - lastDotPos \> 3 Then
	emailCheck = False
	CheckEmail = emailCheck
	Exit Function
End If

' Kontrollerar att tecknen efter sista punkten är alfanumeriska.
For i = lastDotPos + 1 To emailLength
	If Asc(Mid(emailString, i, 1)) \< 97 Or Asc(Mid(emailString, i, 1)) \> 122 Then
		If Asc(Mid(emailString, i, 1)) \< 48 Or Asc(Mid(emailString, i, 1)) \> 57 Then
			emailCheck = False
			CheckEmail = emailCheck
			Exit Function
		End If
	End If
Next

' Returnerar kontrollvärdet till anroparen.
CheckEmail = emailCheck

End Function
%>

Mvh Razor http://www.razorsedge.nu/

[Redigerat av Razor den 21 dec 2000]

130 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)