PDA

View Full Version : PHP - Controllo immissione mail


negator136
21-07-2006, 13:35
ciao a tutti,

sono un principiante nell'uso del php e vorrei farvi una domanda...

ho un form in cui un utente può inserire la sua email per iscriversi alla newsletter. come posso fare in modo che il programma mi esegua un controllo e che mi avverta nel caso che la stringa non sia della forma ***@***.***?

grazie mille

andbin
21-07-2006, 13:40
ho un form in cui un utente può inserire la sua email per iscriversi alla newsletter. come posso fare in modo che il programma mi esegua un controllo e che mi avverta nel caso che la stringa non sia della forma ***@***.***?Io mi sono fatto una funzione apposita che usa una espressione regolare:
function is_email_valid ($email)
{
if (eregi ("^[a-z0-9\._-]+@[a-z0-9\._-]+(\.[a-z]{2,3}){1,2}$", $email))
return TRUE; // Email valida
else
return FALSE; // Email non valida
}

negator136
21-07-2006, 13:59
Io mi sono fatto una funzione apposita che usa una espressione regolare:
function is_email_valid ($email)
{
if (eregi ("^[a-z0-9\._-]+@[a-z0-9\._-]+(\.[a-z]{2,3}){1,2}$", $email))
return TRUE; // Email valida
else
return FALSE; // Email non valida
}


bella! grazie!


non conoscevo la funzione eregi. ora vado a scoprire cos'è :)

ianaz
21-07-2006, 14:22
bella! grazie!


non conoscevo la funzione eregi. ora vado a scoprire cos'è :)
c'é anche per JavaScript...ti conviene quasi farne una in JS così da non caricare un altra pagina e poi farlo comuqnue sull'altra in php :)

negator136
21-07-2006, 14:29
ok ho letto un po' di cose sulle espressioni regolari e sono riuscito ad interpretare la tua funzione :)

un paio di domande:

dove scrivi +(\.[a-z]{2,3}){1,2}$ potrei scrivere anche +\.([a-z]{2,3}){1,2}$ o sbaglio?

in questo caso le parentesi tonde sono ancora necessarie?

e a cosa serve {1,2} alla fine?

thanks

negator136
21-07-2006, 14:47
c'é anche per JavaScript...ti conviene quasi farne una in JS così da non caricare un altra pagina e poi farlo comuqnue sull'altra in php :)

purtroppo conosco il JS ancor meno del PHP (ovvero per nulla) quindi mi conviene cercare di restare su quest'ultimo per il momento...

almeno fino a quando non conoscerò il php ad un livello accettabile. :)

ianaz
21-07-2006, 14:56
bé, se t'interessa:


Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
if (!Filtro.test(email@email.com)){
alert("L'e-mail non é valida.");
}



;)

buona fortuna

andbin
21-07-2006, 15:49
dove scrivi +(\.[a-z]{2,3}){1,2}$ potrei scrivere anche +\.([a-z]{2,3}){1,2}$ o sbaglio?

in questo caso le parentesi tonde sono ancora necessarie?

e a cosa serve {1,2} alla fine?Non devi togliere quelle parentesi (altrimenti il significato cambia).

Come vedi non esiste 1 sola ed unica espressione regolare per testare la validità di una email. ianaz ne ha fornita una diversa dalla mia e fatta in Javascript.

Nella mia espressione, la parte (\.[a-z]{2,3}){1,2} serve per questo motivo: dopo il @dominio si possono avere tipicamente altri domini del tipo .com, .it ma anche .co.uk ad esempio.
In pratica, con la mia espressione, si può avere .AA oppure .AAA (vedi {2,3}) e tutto questo si può ripetere una o due volte (vedi {1,2}). Ecco il perché delle parentesi che servono a raggruppare il contenuto.

negator136
21-07-2006, 17:24
Non devi togliere quelle parentesi (altrimenti il significato cambia).

Come vedi non esiste 1 sola ed unica espressione regolare per testare la validità di una email. ianaz ne ha fornita una diversa dalla mia e fatta in Javascript.

Nella mia espressione, la parte (\.[a-z]{2,3}){1,2} serve per questo motivo: dopo il @dominio si possono avere tipicamente altri domini del tipo .com, .it ma anche .co.uk ad esempio.
In pratica, con la mia espressione, si può avere .AA oppure .AAA (vedi {2,3}) e tutto questo si può ripetere una o due volte (vedi {1,2}). Ecco il perché delle parentesi che servono a raggruppare il contenuto.


chiarissimo! non avevo pensato ai domini "doppi" :)

grazie a entrambi