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?