Validate E-Mail

JavaScriptBank

Bannato
26 Nov 2009
86
0
0
This JavaScript verifies that a string looks like a real e-mail address.... detail at JavaScriptBank.com - 2.000+ free JavaScript codes


How to setup

Step 1: Use JavaScript code below to setup the script
JavaScript
Codice:
<script language="javascript">
// Created by: Francis Cocharrua :: http://scripts.franciscocharrua.com/

function Validate_String(string, return_invalid_chars) {
  valid_chars = '1234567890-_.^~abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  invalid_chars = '';
  if(string == null || string == '')
     return(true);

  //For every character on the string.   
  for(index = 0; index < string.length; index++) {
    char = string.substr(index, 1);                        
     
    //Is it a valid character?
    if(valid_chars.indexOf(char) == -1) {
      //If not, is it already on the list of invalid characters?
      if(invalid_chars.indexOf(char) == -1) {
        //If it's not, add it.
        if(invalid_chars == '')
          invalid_chars += char;
        else
          invalid_chars += ', ' + char;
      }
    }
  }
            
  //If the string does not contain invalid characters, the function will return true.
  //If it does, it will either return false or a list of the invalid characters used
  //in the string, depending on the value of the second parameter.
  if(return_invalid_chars == true && invalid_chars != '') {
    last_comma = invalid_chars.lastIndexOf(',');
    if(last_comma != -1)
      invalid_chars = invalid_chars.substr(0, $last_comma) + 
      ' and ' + invalid_chars.substr(last_comma + 1, invalid_chars.length);
    return(invalid_chars);
    }
  else
    return(invalid_chars == ''); 
}


function Validate_Email_Address(email_address){
  // Modified and tested by Thai Cao Phong, JavaScriptBank.com
  //Assumes that valid email addresses consist of [email protected]
  
  at = email_address.indexOf('@');
  dot = email_address.indexOf('.');

  if(at == -1 || 
    dot == -1 || 
    dot <= at + 1 ||
    dot == 0 || 
    dot == email_address.length - 1)
  {
  	alert("Invalid email");
    return(false);
  }
     
  user_name = email_address.substr(0, at);
  domain_name = email_address.substr(at + 1, email_address.length);                  

  if(Validate_String(user_name) === false || Validate_String(domain_name) === false)
  {
  	alert("Invalid email");
    return(false);
  }

  alert("Valid email");//return(true);
}
</script>
	<!--
    	This script downloaded from www.JavaScriptBank.com
    	Come to view and download over 2000+ free javascript at www.JavaScriptBank.com
	-->

Step 2: Copy & Paste HTML code below in your BODY section
HTML
Codice:
<form name=f>
<input type=text name=mail value="">
<input type=button value=Check onclick="Validate_Email_Address(document.f.mail.value)">
</form>
	<!--
    	This script downloaded from www.JavaScriptBank.com
    	Come to view and download over 2000+ free javascript at www.JavaScriptBank.com
	-->






 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Interessante, ma il problema è che mi basta disabilitare il motore di javascrpit nel browser per passare il turno e fregare qualsiasi procedura che si basa sull'autenticazione dei form tramite javascript.
Una procedura ben realizzata dovrebbe prevedere anche l'invio del modulo tramite javascript in modo tale che disabilitando il motore del javascript non riuscirò e inviare nulla e quindi a non falsificare il risultato.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Anche quello è facilmente ingannabile. Basterebbe mettere anche un controllo lato server...
Quello ci deve essere sempre dato che comunque non puoi fidarti del solo Javascript.
Però la scelta dipende da cosa vuoi fare e da cosa ti aspetti che l'utente faccia.
Se devi dare la massima accessibilità al sito, ovvero anche a chi naviga senza javascipt allora basta un'autenticazione semplice come quella proposta nel primo messaggio: il sito verifica se il dato inserito è giusto e se sì invia il dato, altrimenti no.
Se invece demandi anche al javascript di inviare il form, allora rischi effettivamente che niente venga inviato se lo user agent non usa il javascript, ti faccio un esempio banale.
Nell'html:
Codice:
<form method="post" onsubmit="return inviaDati();">
... seguono i dati relativi ai vari elementi del form
<input type="submit" ....  />
</form>
come vedi, l'elemento form non ha un attributo action, quindi anche se invii i dati questi non vanno da nessuna parte.
Ma siccome il nostro scopo è di far arrivare quei dati ad un server per essere elaborati, ora uso javascript per dirgli dove inviarli.
Codice:
<script>
function inviaDati() {

// per prima cosa dico qual'è il file remoto da raggiungere
document.forms[0].action = 'pippo.php'; // che fantasia vero?

// quindi controllo che i campi del form siano scritti nel giusto modo.
if (controllaCampi()) {
   document.forms[0].submit(); // Se giusti invio il form.
   return true;
}

return false; // Dati inesatti non invia nulla.
</script>
Ovvio che ho semplificato al massimo, ma capisci da te che se l'action non è nel <form> disabilitando il javascript non viene mai inviato nulla.
A che serve un tale modo? Bo! Infatti credo che nessuno sano di mente lo implementerebbe.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Sì, ma si può sempre leggere il codice Javascript in modo da puntare direttamente all'action del form.
Sì a che ci fai?
Il metodo descritto è solo un sistema come un altro per evitare che chi ha il javascript abilitato invii moduli senza aver compilato i campi, non per evitare spam, per quello ci sono metodi molto più complessi che vanno sempre usati lato server.
Una volta che hai il file a cui puntare non è che ti fai una tua paginetta per spedirmi email e anche se lo fai non ottieni nulla di più che mandarmi un'email se tutto va bene.
Ovvio parlo di email, ma la cosa funziona per ogni altra cosa.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao ad entrambi
il discorso è interessante e anche spero mi risolva una curiosità:
attraverso "visualizza sorgente" vedo i campi del form
e il nome della pagina "action" (nella fattispecie) pippo.php, è evidente che comunque so il nome del sito
e dell'eventuale cartella in cui si trova pippo (nome, come detto, molto fantasioso*)
mi faccio una pag php chiamata ultra_spam.php
PHP:
<?php
while($pinco="sino a che ne ho voglia"){
?>
<form name="form1" method="post" action="http://wwww.sito.it/pippo.php" target="_blank">
<!--
vari campi di input == a quelli che vedo in pippo.php o nel form
compreso pulsante di submit che tramite un po' di js faccio funziare autonomamente
ad ogni ciclo del while
-->
</form>
<?php
}
?>
se il mio ragionamento è giusto (e non c'è un captcha) non riempio la casella di posta?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Sì, è corretto. Comunque basterebbe creare uno script che esegue una richiesta HTTP inviando anche i dati POST e risolvi il problema. Per questo di solito nei miei form utilizzo un anti-flood basato su database.
 
Discussioni simili
Autore Titolo Forum Risposte Data
MarcoGrazia Validazione remota tramite plugin (jquery validate) Snippet Javascript 0
MarcoGrazia jquery validate() controllo checkbox jQuery 2
MarcoGrazia jquery validate, necessità di validare almeno un elemento select su due jQuery 1
Q [Javascript] data validate Javascript 2
MarcoGrazia Validazione forum con jquery.validate jQuery 2
T validate required due campi alternativi jQuery 2
F Jquery validate jQuery 1
R Validate form mondiale PHP 2
V Problemi con Validate jQuery 4
felino Mac OS e Client Mail: Stato non in linea Mac e Software 2
I recupera password via mail salva pasword password_hash PHP 2
I resetta password via mail PHP 2
M telecamera Foscam - mancato invio mail ad account gmail IP Cam e Videosorveglianza 0
K Importazione e-mail da account gmail ad un altro account gmail Posta Elettronica 0
R Invio mail con allegati multipli PHP 0
A Mail con funzione mail() riconosciute come spam PHP 9
R Invio mail con allegati da directory PHP 1
R Confrontare il dominio di una mail con una stringa contenente un dominio personalizzato, tutto ciò in php o javascript PHP 0
Daniele_Carrara Problema timeout - invio mail PHP 7
G Con Microsoft Outlook 2016 come si possono cancellare le mail doppie? Posta Elettronica 0
G Evitare che mi continui ad arrivare in alice mail spam Posta Elettronica 2
M configurare mail register.it (con 1000 invii/die) su Outlook Posta Elettronica 0
Marti1! Problema con casella mail cancellata Posta Elettronica 3
U PHP bottone per invio mail o ritorno al form PHP 15
G Invio mail con php da dati prelevati da un database PHP 9
AC1 [PHP] Invio Mail PHP 18
A [HTML] Testo mail non visualizzabile su IOS HTML e CSS 0
L Problema funzione mail() PHP PHP 3
I [PHP] inviare form con allegato tramite una mail PHP 1
A Libero mail non funziona Posta Elettronica 3
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
L PopUp tramite PHP se la mail inserita è già registrata nel database PHP 3
G [PHP] Creare mail con allegato nascosto e bottone di richiamo PHP 0
P [PHP] PEAR Mail e Query PHP 3
Cosina Andare a capo nel testo della mail ricevuta dal form php PHP 1
D [PHP] script che invii una mail automatica dopo risposta ad una discussione di un forum PHP 0
M [PHP] mandare mail usando i cantatti di una lista su mailchimp PHP 7
G [PHP] Creare appuntamento ed inviarlo tramite mail (Outlook e Gmail) PHP 0
L windows live mail Posta Elettronica 4
A [PHP] Problema invio mail con funzione mail() PHP 3
A Php mail non invia due mail di seguito PHP 3
A problema mail Posta Elettronica 5
A [PHP] Inviare mail con piu immagini allegate PHP 6
A [PHP] Modulo mail PHP 3
A [PHP] Formattazione Mail HTML HTML e CSS 5
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
paloppa [PHP] Invio mail da form dubbio PHP 17
B [PHP] Mail di Avvenuta registrazione PHP 4
M [PHP] Componi i file di Excel in e-mail PHP 1
S Creare nuovo account in Mail Mac e Software 0

Discussioni simili