Ciao a tutti,
sto facendo un piccolo script e mi sono imbattuto in una cosa che non riesco a comprendere.
Innanzi tutto questo è il mio script:
<?php
$email=$_POST[email];
$cell=$_POST[cell];
// Verifica email
$valid_mail=mail_validation ($email);
if ($valid_mail == FALSE)
//if ($valid_mail = mail_validation ($email) == FALSE) !!!!!!!!!!!!!
echo "
Indirizzo email immesso non valido.</p>
";
//Verifica num telefono
$valid_num=is_numeric ($cell);
if ($valid_num == FALSE)
echo "
Il numero di telefono immesso non è valido.
";
else
//Aggiungi prefisso +39
$cell="+39".$cell;
//Verifica se continuare o tornare indietro
if ($valid_mail == FALSE || $valid_num == FALSE )
{echo "
Torna indietro e reinserisci i dati correttamente</p>
";}
else
//continua script
{
//Creazione riga da scrivere
$row=$cell.";".$email.";";
//Apertura, o creazione del file in caso insesstente, in modalità sola scrittura ultima riga con controllo
$file= @fopen ('lista_sms.txt','a');
if ($file === NULL)
echo "
Problema con il caricamento del file di salvataggio. Contattare l'amministratore o il webmaster.</p>";
//Scrittura riga di testo con a capo finale (Ottimizzato per visualizzazione file in ambiente windows)
$result=@fwrite ($file, $row."\r\n");
if ($result === FALSE)
echo "
Erore nella scrittura del file. Contattare l'amministratore o il webmaster</p>";
fclose ($file);
}
function mail_validation($email){
$result = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$email);
if($result == FALSE){
return FALSE;
}else{
return TRUE;
}
}?>
La parte che no riesco a comprendere è quella iniziale dove avviene il controllo della validità della mail, in quella parte richiamo la funzione mail_validation e assegno il valore alla variabile $valid_mail; in caso il valore sia FALSE $valid_mail diventa FALSE e viene scritto sia l'errore della mail sbagliata che quella del controllo successivo (vedi commento "Verifica se continuare o tornare indietro").
Fino a qui tutto bene...
Se faccio una piccola modifica per accorciare il codice e nel controllo mail richiamo la funzione all'interno dell'if come scritto nella riga di commento successiva allora succede una cosa strana:
1. se la mail è giusta mi stampa l'errore generale della funzone di controllo successiva bloccandomi lo script
2. se la mail è errata mi stampa l'errore specifico relativo alla mail ma non quello generale successivo
Come mai? Dove sbaglio?
Grazie anticipatamente