problema invio email tramite form

  • Creatore Discussione Creatore Discussione asevenx
  • Data di inizio Data di inizio

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Salve ho il seguente form per invio richieste di prenotazione tramite email. Il sistema funzionava alla perfezione, poi ho fatto una piccola (e credo banale) modifica e ora non mi giungono più le email. Lo script è questo:

PHP:
<?php
 
if(isset($_POST['email'])) {

	// info su destinatario e oggetto del messaggio
    $sito = "www.miosito.it";
	$destinatario = "email@gmail.com";
    $oggetto = "Richiesta prenotazione";

    $nome = $_POST['nome']; // campo
    $telefono = $_POST['telefono']; // campo	
    $email = $_POST['email']; // campo
	$partenza = $_POST['partenza']; // campo
	$arrivo = $_POST['arrivo']; // campo
    $testo = $_POST['testo']; // campo
	
    $errore = "";

	// verifico la presenza e la validità del campo nome	
    $string_exp = "/^[A-Za-z .'-]+$/";
	if($nome == "Nome e Cognome"){
		$errore .= "- Il nome inserito sembra essere assente o non valido.<br />";			
	
	} else {
 	
		if(!preg_match($string_exp,$nome)) {
			$errore .= "- Il nome inserito sembra essere assente o non valido.<br />";
		}
	}		
	
	// verifico la presenza e la validità del campo telefono	
	$tel = str_replace(" ", "", $telefono);
	
	if (is_numeric($tel)) {
		$errore .= "";
	
	} else {

		$errore .= "- Il numero di telefono inserito sembra essere assente o non valido <br />sono ammessi solo caratteri numerici.<br />";			
	} 
	
	// verifico la presenza e la validità del campo email	
	$email_exp = "/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/";
	
	if($email == "E-Mail"){
		$errore .= "- L'indirizzo email inserito sembra non essere valido.<br />";		
	
	} else { 
		
		if(!preg_match($email_exp,$email)) {
			$errore .= "- L'indirizzo email inserito sembra non essere valido.<br />";
		}
	}	

	//controllo sulle date di arrivo e di partenza
	$partenza_anno = substr($partenza, 6, 4); 
	$partenza_mese = substr($partenza, 3, 2); 	
	$partenza_giorno = substr($partenza, 0, 2); 

	$arrivo_anno = substr($arrivo, 6, 4); 
	$arrivo_mese = substr($arrivo, 3, 2); 	
	$arrivo_giorno = substr($arrivo, 0, 2);
	
	if ($arrivo_anno <= $partenza_anno){
		
		if ($arrivo_mese <= $partenza_mese){
		
			if ($arrivo_giorno <= $partenza_giorno){ //possibile partenza nello stesso giorno di arrivo
			
			$errore .= "";
			
			} else {
			
			$errore .= "- La data di arrivo deve essere successiva a quella di partenza <br />il giorno di partenza &egrave; antecedente a quello di arrivo. ARRIVO: $arrivo PARTENZA: $partenza<br />";	
			}
			
		} else {
		
		$errore .= "- La data di arrivo deve essere successiva a quella di partenza <br />il mese di partenza &egrave; antecedente a quello di arrivo.<br />";		
		}
	
	} else {
	
	$errore .= "- La data di arrivo deve essere successiva a quella di partenza <br />l'anno di partenza &egrave antecedente a quello di arrivo.<br />";		
	}
	
	// verifico la presenza e la validità del campo testo/messaggio	
	//if(strlen($testo) < 2) {
 
		//$errore .= 'Il testo inserito non è presente o non sembra essere valido.<br />';
	//}
 
	//if(strlen($errore) > 0) {
 
		//died($errore);
	//}

	//verifica se ci sono errori
	if($errore != ""){
	
	echo "Siamo spiacenti, ma abbiamo riscontrato i seguenti errori durante l'invio del messaggio: <br /><br />";
	echo $errore."<br />";
	echo "La preghiamo di <a href='javascript:history.back()'>tornare indietro</a> e compilare correttamente il modulo.<br /><br />";


	} else {	
	
		// email inviata alla propria casella 	
		$messaggio = "Hai ricevuto una richiesta di prenotazione proveniente dal sito ".$sito. "\n\n";
	 

		function clean_string($string) {
	 
			$bad = array("content-type","bcc:","to:","cc:","href");
			return str_replace($bad,"",$string);
		}
	 
		$messaggio .= "Mittente: ".clean_string($nome)."\n";
		$messaggio .= "Telefono: ".clean_string($telefono)."\n";	
		$messaggio .= "Email: ".clean_string($email)."\n";
		$messaggio .= "Data di arrivo: ".clean_string($arrivo)."\n";
		$messaggio .= "Data di partenza: ".clean_string($partenza)."\n";	
		$messaggio .= "Testo: ".clean_string($testo)."\n";

		// create email headers
		$headers = 'da: '.$email."\r\n".
	 
		@mail($destinatario, $oggetto, $messaggio, $headers); 
		


?>
 	<!-- messaggio di ringraziamento -->
	Grazie per la vostra prenotazione, sarete ricontattati al pi&ugrave presto.
	<br/>	
	Attendere... sarete reindirizzati automaticamente nella home page del sito..
	<meta http-equiv=refresh content="5; url=../index.php">
	
<?php
 
	}
}
 
?>

La modifica che ho fatto è sostituire < con <= in
PHP:
if ($arrivo_giorno <= $partenza_giorno){ //possibile partenza nello stesso giorno di arrivo
e modificare l'indirizzo email per testarlo. Non credo siano modifiche che possano compromettere il corretto funzionamento dello script, quindi quale potrebbe essere il problema? Grazie a tutti
 
arrivo 25/12/2014
partenza 05/01/2015

PHP:
    if ($arrivo_anno <= $partenza_anno){ 
        if ($arrivo_mese <= $partenza_mese){ 
            if ($arrivo_giorno <= $partenza_giorno){ //possibile partenza nello stesso giorno di arrivo

che succede ?

non ho guardato altro
ciao
Marino
 
Adesso provo e ti dico. Comunque le email mi arrivano, ma con netto ritardo.
 
nel caso delle date che ti ho indicato, viene attivato un errore che non è vero e la mail non viene inviata
ciao
Marino
 

Discussioni simili