Dovendo immettere molti dati (indirizzi email) in un db, partendo da un file .txt in formato CVS, mi sono fatto un form per controllare anche la effettiva sussistenza dei dati immessi - ovvero, se sono effettivamente indirizzi email nel formato corretto.
É infatti possibile che, nel file .txt, ci siano svarioni ed errori di battuta, del tipo:
tizio@dominio oppure tizio@dominio., etc...
Ho quindi usato questo codice:
Codice PHP:
function chkEmail($value) {
$value = trim($value);
if($value != "") {
if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $value))
return false;
else return true;
}
else return false;
}
$mails = $_POST['tfield'];
$mails = strtolower($mails);
$mail = explode(",","$mails");
foreach ($mail as $value) {
$result = mysql_query("SELECT * FROM `coll` WHERE `email` = '$value'");
$chk = mysql_num_rows($result);
if ($chk == 0) {
chkEmail($value);
$query1 = ("INSERT INTO `coll` (`email`) VALUES ('$value')");
$result1 = mysql_query($query1)
or die("Query failed");
}
}
Però, non mi effettua nessun controllo. Per verificare la funzionalità, infatti, ho inserito un blocco di dati tra cui c'erano delle stringhe del tipo: test@ oppure test@test., che sono state inserite nel db, e quindi considerate valide.
Dove ho toppato?