- Home
- Categorie
- Coding e Sistemistica
- PHP
- Controllo e-mail
-
Controllo e-mail
Ciao! ho un problema con il controllo e-mail, se l' e-mail è giusta mi dice che è giusta e registra i campi nel database, se l'e-mail è sbagliata mi dice che è sbagliata ma registra sempre, come si puo fare?
Praticamente se uno digita un indirizzo e-mail che non rispecchia le caratteristiche tipiche ( @ . ) la registrazione avviene ugualmente.
Praticamente faccio il controllo ma nonfermo la registrazione in caso di errore.
Vi mando il codice della pagina.
<?php
$email=$_POST['email'];
$pwd=$_POST['pwd'];
$pwd_conferma=$_POST['pwd_conferma'];
$radio=$_POST['radio'];//controllo e-mail
$email = $POST['email'];
if (preg_match('/^[^0-9][a-zA-Z0-9]+([.][a-zA-Z0-9_]+)[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)[.][a-zA-Z]{2,4}$/',$email)) {
echo "e-mail esatta<br><br>";
} else {
echo "e-mail sbagliata<br><br>";
}
//fine controllo e-mail
// verifica campi obbligatori
if(($email == '') ||($pwd == '')||($radio == '') )
{
echo "Registrazione non riuscita <p>Compila tutti i campi obbligatori!</p>";
}elseif($pwd==$pwd_conferma)
//registrazione
$query=mysql_query("INSERT INTO utenti (email,password) VALUES('$email','$pwd')") or die ("e-mail gia presente <br><br>Torna alla registrazione<br><br><br>".mysql_error());if($pwd == $pwd_conferma)
{
echo "<br><br>Ciao! $email <br><br>";
}
else
{
echo "Le password inserite non coincidono <br><br>Riprova!<br><br>";}
?>
Come lo trovate?
Tanti saluti.
-
Il problema è che la funzione echo non interrompe lo script.
Dovresti sostituire questo
[PHP]echo "e-mail sbagliata<br><br>";[/PHP]
con questo:
[PHP]echo "e-mail sbagliata<br><br>";
exit;[/PHP]
-
<?php $email=$_POST['email']; $pwd=$_POST['pwd']; $pwd_conferma=$_POST['pwd_conferma']; $radio=$_POST['radio']; $errore = false; //controllo e-mail $email = $_POST['email']; if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email)) { echo "e-mail esatta<br /><br />"; } else { echo "e-mail sbagliata<br /><br />"; $errore = true; } //fine controllo e-mail // verifica campi obbligatori if(($email == '') || ($pwd == '') || ($radio == '') ) { echo "Registrazione non riuscita <p>Compila tutti i campi obbligatori!</p>"; $errore = true; } if($pwd != $pwd_conferma && ) { echo "Registrazione non riuscita <p>la password non corrispondono!</p>"; $errore = true; } if(!$errore) { //registrazione $query=mysql_query("INSERT INTO utenti (email,password) VALUES('$email','$pwd')") or die ("e-mail gia presente <br><br>Torna alla registrazione<br><br><br>".mysql_error()); } if($query) { echo "<br /><br />Ciao! $email <br /><br b/>"; } ?>
-
Rispondo a RCayla,
Ho aggiustato il tutto con il tuo consiglio, adesso funziona se l'email non ha @ e il . non ti fa registrare.
Visto che ci siamo per inserire un link nel codice come si fà?
In modo che quando uno sbagliava l'e-mail aveva il link per tornare alla registrazione.
Un link lo fatto solo fuori dal codice e si vede solo se tutto va a buon fine.
Ti rimando il codica per vedere la differenza da questo e il primo.Ti saluto e grazie mille.
<?php
$email=$_POST['email'];
$pwd=$_POST['pwd'];
$pwd_conferma=$_POST['pwd_conferma'];
$radio=$_POST['radio'];// verifica campi obbligatori
if(($email == '') ||($pwd == '')||($pwd_conferma=='') ||($radio == '') )
{
echo "Registrazione non riuscita <p>Compila tutti i campi obbligatori!</p>";
}
//controllo e-mail
$email = $POST['email'];
if (preg_match('/^[^0-9][a-zA-Z0-9]+([.][a-zA-Z0-9_]+)[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)[.][a-zA-Z]{2,4}$/',$email)) {
echo "e-mail esatta<br><br>";
} else {
echo "e-mail sbagliata<br><br>";
exit;
}
//fine controllo e-mail
if($pwd==$pwd_conferma)
//registrazione
$query=mysql_query("INSERT INTO utenti (email,password) VALUES('$email','$pwd')") or die (mysql_error());if($pwd == $pwd_conferma)
{
echo "Registrazione Riuscita<br><br>Ciao! $email <br><br>";
}
else
{
echo "Le password inserite non coincidono <br><br>Riprova!<br><br>";
}?>
-
Sono riuscito a fare il link.
Dopo varie prove ho scoperto che se l'email è giusta,ma senza i campi pwd e pwd_conferma pieni mi registra ugualmente.
Cosi nel database mi trovo solo il campo e-mail.
Continuo a provare, da cosa e dato l'errore?.
AIUTO.CIAO!!!!!!!!!!
-
Caro fiscet ho provato anche il tuo mi dava errore qui
if($pwd != $pwd_conferma && ), ho messo gli apici ,
if('$pwd != $pwd_conferma &&' ),li andava ma mi dava che cera una variabile indefinita.
Provo ancora.
$errore = true;, cosa vuol dire la variabile $errore.
Ciao!,aspetto consigli, anche perchè va bene da una parte e male dall'altra, prima o poi funzionerà il tutto.
-
Ciao,
sì c' un errore, i due && non ci vanno
-
Riguardo i due campi vuoti è la stessa cosa dell'emmail errata, devi mettere un "exit;" dopo l'echo.
Ecco il codice completo:
[PHP]<?php
$email=$_POST['email'];
$pwd=$_POST['pwd'];
$pwd_conferma=$_POST['pwd_conferma'];
$radio=$_POST['radio'];// verifica campi obbligatori
if(($email == '') ||($pwd == '')||($pwd_conferma=='') ||($radio == '') )
{
echo "Registrazione non riuscita <p>Compila tutti i campi obbligatori!</p>";
exit;
}
//controllo e-mail
if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)[.][a-zA-Z]{2,4}$/',$email)) {
echo "e-mail esatta<br><br>";
} else {
echo "e-mail sbagliata<br><br>";
exit;
}
//fine controllo e-mail
if($pwd==$pwd_conferma)
//registrazione
$query=mysql_query("INSERT INTO utenti (email,password) VALUES('$email','$pwd')") or die (mysql_error());if($pwd == $pwd_conferma)
{
echo "Registrazione Riuscita<br><br>Ciao! $email <br><br>";
}
else
{
echo "Le password inserite non coincidono <br><br>Riprova!<br><br>";
}?>[/PHP]
-
RCayla, OK funziona.
Grazie mille.
Alla prossima
-
PER fiscet,
ho provato li mi funziona.
Mi da errore, mi dice che la variabile $query non e definita,
Ho prvato a definirla così:
$query= true;
if($query) {
echo "<br /><br />Ciao! $email <br /><br b/>";
Funzionava ma non andava ancora bene.