regex convalida mail

SolidSnake4

Utente Attivo
23 Ott 2007
505
0
0
Salve a tutti volevo chiedervi una cosa, una regex fatta in questo modo :

$regex = "~^[a-zA-Z0-9._]+\@[a-zA-Z]+\.[a-z]{2,4}~";

è buona come strumento di validazione, oppure posso aggiungere qualche altro controllo per renderlà meno bypassabile ?
 
Io ho creato questa:
Codice:
^([a-z0-9_\-.]+)\@([a-z0-9_\-.]+)\.([a-z]+){2,6}$
Rispetto alla tua ha qualcosa in più: la possibilità di aggiungere il carattere "-", il dominio può contere anche numeri e il carattere "-" e "." (un sottodominio) e infine il TLD dell'email può essere dai 2 ai 6 caratteri, non dai 2 ai 4.
 
e per controllare che il nome della mail prima della @, in maniera tale che non contenga caratteri speciali tipo $%&£"!()=?:; ecc ecc, ho fatto in questo modo:

^[a-zA-Z0-9._]+

ma non basta cosa devo aggiungere altro ?

Ma il dominio di una mail può contenere numeri ?
 
Ultima modifica:
^[a-zA-Z0-9._-]+ in questo modo ? continua a darmi come valido un nome del tipo brambilla%&_fumagalli
 
Boh, non so che dirti, sbaglierai la sintassi...
Se fai così funziona sicuramente:
PHP:
if (!preg_match('#^([a-z0-9_\-.]+)\@([a-z0-9_\-.]+)\.([a-z]+){2,6}$#', $email)) {
  echo 'Email non valida';
}
 
ma non per la mail intera. Quella l'ho già fatta è funziona, ora stavo controllando i caratteri di un nome che viene inserito, in modo che contenga solo caratteri alfanumerici capito ?
 
Beh, conoscendo le regexp cosa c'è di difficile?... o non le conosci?
PHP:
if (!preg_match('#[\w\d]+#', $nome)) {
  echo 'Inserire solo caratteri alfanumerici';
}
 
non ci avevo pensato ad usare i metacaratteri stavo facendo tutto tipo a-zA-Z ecc ecc grazie cmq non va lo stesso continua a darmi come valido i caratteri $%&£ vabè
 
Ultima modifica:
Dimenticanza mia...
PHP:
if (!preg_match('#^[\w\d]+$#', $nome)) {
  echo 'Inserire solo caratteri alfanumerici';
}
così 10000000% funziona.
 
ma non per la mail intera. Quella l'ho già fatta è funziona, ora stavo controllando i caratteri di un nome che viene inserito, in modo che contenga solo caratteri alfanumerici capito ?

Per ammettere SOLO caratteri alfanumerici potrebbe andare anche qualcosa del genere:
PHP:
preg_match("/^[a-z0-9]+$/i",$var)
 
e il controllo della mail che ho fatto va bene o la posso fare un pò più complessa per renderla meno bypassabile ?
 
e il controllo della mail che ho fatto va bene o la posso fare un pò più complessa per renderla meno bypassabile ?
Credo che basti e avanzi per prevenire gli attacchi provenienti dagli "umani", per i bootnet c'è solo CAPTCHA ma anche quello comincia a presentare qualche limite :)
 

Discussioni simili