Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245

    Controllo caratteri in un email

    Ciao a tutti,
    ho la necessità di eseguire un controllo sul campo email di un form; ho seguito passo passo la guida su asp.html.it http://asp.html.it/articoli/leggi/762/convalida-del-campo-email/4/
    ma sto avendo qualche problema, e non riesco a capire dove sta sto problema. Anche se la mail è corretta continua a valutarmela come non valida. Why?!?

    Codice:

    codice:
    Function CheckEmail(strEmail)
    	Dim blnEmailAccepted
    	Dim arrNome,szParte,intCount,szChar
    	
    	blnEmailAccepted = true
    	'arrNome contiene le due parti dell'email
    	'divise dal carattere @
    	arrNome = split(strEmail,"@")
    	
    	'arrNome[0] = prima parte dell'email
    	'arrNome[1] = seconda parte dell'email
    	'Se arrNome <> 1, non è stato inserito il carattere @
    	If Ubound(arrNome) <> 1 then
    		blnEmailAccepted = false
    		Exit Function
    	End If
    	
    	For Each szParte in arrNome
    		'La stringa è vuota (prima o dopo @)
    		If Len(szParte) <= 0 then
    			blnEmailAccepted = false
    			Exit Function			
    		End If
    		
    		For intCount = 1 to Len(szParte)
    			'Trasformiamo in lower case perc la successiva verifica dei
    			'caratteri ammessi in un email con Instr, che è case sensitive
    			'Mid suddivide in sottostringhe una stringa
    			szChar = LCase(Mid(szParte,intCount,1))
    			'Se i caratteri non si trovano nella stringa di controllo, che 
    			'contiene tutti i caratteri ammessi in un email, l'email non è valida
    			If Instr("abcdefghijklmnopqrstuvwxyz_-.",szChar) <= 0 and not IsNumeric (szChar) then
    				blnEmailAccepted = false
    				Exit Function
    			End If
    		Next
    			If Left(szParte,1) = "." or Right(szParte,1) = "." then
    				blnEmailAccepted = false
    				Exit Function
    			End If
    	Next		
    	
    	'-- Controlli validi solo per la seconda parte dell'email
    	
    	'Verifichiamo che ci sia un punto
    	If Instr(arrNome(1),".") <= 0 then
    		blnEmailAccepted = false
    		Exit Function
    	End If
    	
    	'response.write("Before:" & intCount & "
    ")
    	intCount = Len(arrNome(1)) - InStrRev(arrNome(1),".")
    	'response.write("After:" & intCount)
    	
    	'La lunghezza del TLD dell'email non è valida
    	'(TLD = Top-Level Domain)
    	If intCount <> 2 and intCount <> 3 then
    		blnEmailAccepted = false
    		Exit Function
    	End If
    	
    	'Ci sono due .. consecutivi: email non valida
    	If InStr(strEmail,"..") > 0 then
    		blnEmailAccepted = false
    		'Exit Function 
    		'Non lo scriviamo, la funzione termina cmq
    	End If
    End Function

  2. #2
    codice:
    'funzione per validare un indirizzo email (no regexp)
    'Se Torna False la Mail è Valida
    'Se torna True la Mail Non è valida
    Function Valida_Email(Var_Email)
    'Se Torna False la Mail è Valida
    'Se torna True la Mail Non è valida
    
    bolError = False
    
    If len(Var_Email) < 10 Then
    	bolError = True
    ElseIf len(Var_Email) >= 10 Then	
    	x = 1
    	y = 0
    	bolNotExt = False
    	Do Until x = Len(Var_Email)
    		If Mid(Var_Email,x,1) = "@" Then
    			y = y + 1
    		Else
    			y = y
    		End If
    		x = x + 1
    	Loop
    	If Len(Mid(Var_Email,(InStrRev(Var_Email, ".") + 1),Len(Var_Email))) < 2 Then
      		bolNotExt = True
    	End If  
    	If y <> 1 Or bolNotExt Then
    		bolError = True
    	End If
    End If
    Valida_Email=bolError
    END FUNCTION
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,563
    Perché non usare una RegExp che con due righe fai tutto?

    Roby

  4. #4
    Originariamente inviato da Roby_72
    Perché non usare una RegExp che con due righe fai tutto?

    Roby

    perchè non ce l'avevo la funzione per la regexp già fatta
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    codice:
    	
    arrNome = split(strEmail,"@")
    	
    If Ubound(arrNome) <> 1 then
       blnEmailAccepted = false
       Exit Function
    End If
    <>1 ?!?!
    Ubound non restituisce la lunghezza del vettore? se è come ricordo dev'essere <>2

  6. #6
    ciao,
    io il controllo lo effettuo lato server con una regexp es:
    codice:
    <% 
    'indirizzo email valido
    Function RegExpTest(patrn, strng)
      Dim regEx, Match, Matches		' Crea la variabile.
      Set regEx = New RegExp			' Crea un'espressione di ricerca.
      regEx.Pattern = patrn			' Imposta il criterio.
      regEx.IgnoreCase = True			' Imposta la non rilevanza di maiuscole e minuscole.
      regEx.Global = true			' Imposta l'applicabilità globale.
      retval = regex.test(strng)
      if retval then
      	response.Write("OK")
      else
      	response.Write("non ok")
      end if
    End Function
    
    call RegExpTest("[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}", "orazio@istruzione.it")
    
    %>
    prova e facci sapere

    <head> Nothing! </head>
    <body> Open your mind and close your ass !!! </body>

  7. #7
    Originariamente inviato da Lak3d
    codice:
    	
    arrNome = split(strEmail,"@")
    	
    If Ubound(arrNome) <> 1 then
       blnEmailAccepted = false
       Exit Function
    End If
    <>1 ?!?!
    Ubound non restituisce la lunghezza del vettore? se è come ricordo dev'essere <>2

    UBOUND restituisce L'ULTIMO INDICE dell'array...la grandezza dell'array, partendo gli indici da 0, è data da UBOUND(array)+1

    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    ah bello, l'ho sempre usato credendo restituisse il numero di elementi di un array
    come non detto allora...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.