- Home
- Categorie
- Coding e Sistemistica
- Coding
- controllo validità email
-
controllo validità email
ciao a tutti, ho un problema con questo controllo:
<HTML>
<BODY><?php
$errore=false;
$pattern="^[^@]+@[^@]+[^@.]+$";
#ho impostato la variabile a false in modo che quando c'e mi mostri torna indietro
if ( ($nome == "") || ($cognome == "") || ($email == "")) {
#se solo uno dei campi è vuoto
$errore=true;
echo "
Spiacente, devi compilare tutti i campi
";
} elseif (!ereg($pattern,$email)) {
echo "Questa "$email" non e un email valida";
$errore=true;
}else{
echo "Ciao $nome $cognome";
echo "Questa e la tua email: $email
";
}
if ( ($sport == "") && ($cinema == "") && ($donne == "") && ($forum == "") ) {
$errore=true;
tutti i campi sono vuoti
echo "
Spiacente, devi inserire almeno una sezione che vorresti
";
} else {
echo "Nel sito vorresti $sport $cinema $donne $forum
";
}
#sela variabile lineaa è vuota
if ( $linea == "" ) {
$errore=true;
echo "
Spiacente, devi indicarmi a con che linea navighi
";
} else {
echo "Ecco tu navighi con una linea $linea
";
}
la variabile commenti è vuota
if ( $commenti == "" ) {
$errore=true;
echo "
Spiacente, non hai inserito i commenti
";
} else {
echo "Questi i tuoi comenti:
$commenti
";
}
una delle situazioni non risulta effettuate
#la variabile errore viene impostata a truequindi è presente e mi mostra Torna al modulo
if ( $errore) {
echo "
Non hai compilato tutti i campi, devi tornare al <A HREF="convalidaForm.php">modulo</A> ";
}
?>
</BODY>
</HTML>Funziona alla perfezione tutto, se anche un solo campo è vuoto mi da ERRORE e mi da il link per tornare al form di inserimento, ma se compilo tutti i campi non mi fa il controllo sull' email, anzi accetta qualsiasi cosa io scriva all'interno del campo email ignorando il controllo.
Se qualcuno mi potesse aiutare e magari darmi una dritta,
, grazie.
-
così al volo vedo questo:
if ( ($nome == "") || ($cognome == "") || ($email == ""))
quando hai tutti i campi pieni questo è vero quindi salta l'elseif del controllo email.
invece di un elseif, metti un if all'interno.
if nome cognome email != "" {
---if email è valida {
-----echo 'bravo';
---}
else
---echo 'riempi tutti i campi'
}naturalmente questa è solo l'idea, non è il codice giusto
-
No, se i campi sono vuoti mette $errore a true e non passa all'elseif, se invece tutti e tre i campi sono pieni l'elseif dovrebbe farlo, ma non lo fa!
Cmq grazie per evrmi fatto notare che se per esempio email e cognome sono pieni e nome è vuoto il controllo cmq non lo fa,anche se sarebbe inutile dato che lo rimando al form di inserimento.
Cmq il mio problema rimane.Grazie lo stesso
-
hai controllato la correttezza del pattern? non arriva al elseif o non passa il controllo ereg ?
poi spezzeri + il codice (solo x chiarezza)
if ( ($nome == "") || ($cognome == "") || ($email == "")) {
#se solo uno dei campi è vuoto
$errore=true;
echo "
Spiacente, devi compilare tutti i campi
";
exit();
}ed eviti il elseif evitando di annidare troppo il codice
-
riky78 ha detto:
hai controllato la correttezza del pattern? non arriva al elseif o non passa il controllo ereg ?
Penso che sia l'ereg a non funzionare, non è che esiste un altra funzione in php che fa il confronto di due stringhe?
Cmq le tre condizioni devono coesistere e frammentare il codice significherebbe avere if annidati, un bel casino, cmq quella oarte di codice funziona perchè se me tto la parte di controllo email come commento il programma gira.
Quindi arriva all' elseif e si ferma all'ereg. Come posso fare?
-
prova questa:
if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $var_mail)) return false; return true;
-
Niente da fare,probabilmente è perchè sono fuso dopo 8 ore di lavoro, adesso comunque vado a casa e ci provo finchè non ne vengo fuori, appena ce la faccio posto il risultato su questo 3d. Grazie
-
Buongiorno,
ho isolato il pezzo di codice in cui c'è il problema:
<HTML>
<BODY>
<?php
$errore=false;
$pattern="^[^@ ]+@[^@ ]+.[^@ .]+$";
if (!ereg($pattern,$email)) {
echo "Questa "$email" non e un email valida";
$errore=true;
}else{
echo "Ciao $nome $cognome";
echo "Questa e la tua email: $email
";
}
if ( $errore) {
echo "
Non hai compilato tutti i campi, devi tornare al <A HREF="convalidaForm.php">modulo</A> ";
}
?>
</BODY>
</HTML>Se qualcuno potesse dargli un'occhiata...
Secondo il mio parere da neofito di php l'errore sta o nel pattern (molto probabile dato che passa sempre il controllo dell'if come vero) o è la funzione "ereg()" che non funziona. Ah, il controllo l'ho preso da questa guida php http://www.giorgiotave.it/guida_php/controlli_form.php.
Grazie
-
se fai così ^(.)@(.).$
però credo sia sbagliata perché il primo (.*) forse prende tutto, devi vedere come prendere tutto fino a che incontra @
ora sono a lavoro e non posso controllare, comunque cerca su google le espressioni regolari per php
-
Ho trovato l'errore grazie.
L'errore era nel form, c'era un errore nel campo <form method=get action="modulo.php"> grazie ancora.
-
@Nightmare said:
se fai così ^(.)@(.).$
però credo sia sbagliata perché il primo (.*) forse prende tutto, devi vedere come prendere tutto fino a che incontra @
ora sono a lavoro e non posso controllare, comunque cerca su google le espressioni regolari per php
si, hai ragione
-
Scusate l'intrusione leggevo un po' le vostre interessanti discussioni e siccome sono anch'io un principiante vi mostro questa , l'ho fatta da solo e scusate se e' un po' rozza.
<?php
$errore=false;
if(empty($_POST["nome"]) || empty($_POST["cognome"]) || empty($_POST["città"]) || empty($_POST["provincia"]) || empty($_POST["email"]) ||empty($_POST["accetto"])){
$errore=true;
echo "<center>Attenzione!!! Compila i campi obbligatori (*)</center><br>";
echo "<center><a href="index.html"><em><u>Torna al Modulo</u></em></a></center><br>";
}
$pattern="^[^@ ]+@[^@ ]+.[^@ .]+$";
if(!ereg($pattern,$email)){
$errore=true;
echo "<center>Questa E-Mail<b>"$email"</b> non è valida</center>";
echo "<center><a href="index.html"><em><u>Torna al Modulo</u></em></a></center><br>";
}
if($errore){
echo ""; <------l'ho lasciato vuoto perche' se c'e' l'errore riprende l'eco in verde
}else{
$a="[email protected]";
$oggetto="Messaggio di adesione alla Newsletter";
$informazioni="Hai ricevuto un messaggio da : $_POST[nome] - Cognome: $_POST[cognome] - Città: $_POST[città] - Provincia: $_POST[provincia] - Indirizzo E-Mail: $_POST[email] - Sito Web: $_POST[sito] - Descrizione: $_POST[descrizione] - Accettazione: $_POST[accetto]";
mail($a, $oggetto, $informazioni);
echo "<center>Ottimo $_POST[nome] la tua richiesta di adesione è stata inviata correttamente.<br>Benvenuto/a nel mondo di ......<br><a href="index.html"><em><u>Torna alla Home</u></em></a></center>";
}
?>
Funziona bene se potesse servire.....
Ciao a tutti
Marco