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
	-->






 
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.
 
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.
 
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.
 
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?
 

Discussioni simili