Vai al contenuto

messaggio di conferma in un form PHP


Pacio

Messaggi raccomandati

ciao a tutti.

ho un problema con una form di richiesta informazioni fatta in php.

quando il messaggio è stato inviato, vorrei che venisse fuori il messaggio "Richiesta inviata correttamente. Vi risponderemo al più presto." In alternativa ci potrebbe essere anche un redirect verso un'altra pagina, per esempio grazie.htm

non riesco a capire perche questo avviso non funziona.

qualcuno puo aiutarmi?

so che il codice sembra molto ma spero che ci sia un anima buona che possa aiutarmi a risolvere questo errore (il codice ci sarebbe già, non capisco perche non lo stampa nella pagina!)

grazie in anticipo

<?php 
if(array_key_exists('send', $_POST)){
//processiamo i dati dell'email
$to = 'info@andreapacini.it'; // in questa variabile memorizzeremo l'indirizzo email
$subject = 'Richesta info dal sito'; // oggetto dell'email

//array list dei campi previsti
$fieldArr = array('nome', 'cognome', 'email', 'arrivo', 'partenza', 'note');
//impostiamo i campi obbligatori
$requiredArr = array('nome', 'cognome', 'email', 'arrivo', 'partenza');
//creiamo un array vuoto per alcuni campi mancanti
$missingArr = array();

//processiamo ed otteniamo i dati del form
foreach($_POST as $key => $value){
	//assegniamo ad un array temp i valori
	 if(is_array($value)){
		$temp = $value;
	}else {
		$temp = trim($value);
	} 
	if(empty($temp) && in_array($key, $requiredArr)) {
		array_push($missingArr, $key);
	} elseif (in_array($key, $fieldArr)){
		${$key} = $temp;
	}
}

//costruiamo il messaggio
if(empty($missingArr)){
$message = "Nome: $nome\r\n\r\n"; // utilizziamo i caratteri di escape per andare a capo
$message .= "Cognome: $cognome\r\n\r\n";
$message .= "Email: $email\r\n\r\n";
$message .= "Data di arrivo: $arrivo\r\n\r\n";
$message .= "Data di partenza: $partenza\r\n\r\n";
$message .= "Note: $note";

$headers = "From: $nome<$email>"; // popoliamo il campo from dell'email $nome e $email
if (!empty($email)){
	$headers .= "\r\nReply-To: $email";
}

//Inviamo i dati del form all'indirizzo di posta

$mailSent = mail($to, $subject, $message, $headers);
if($mailSent){
	unset($missing);
	//redirect alla pagina del form
	header('Location: contact.php');
	exit;
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>



<body>


<?php 
if($_POST && isset($missingArr) && !empty($missingArr)){
?>
<p class="errorMessage">Attenzione, i campi segnati in rosso sono obbligatori!</p>
<?php 
}
elseif ($_POST && $mailSent){
?>
<h1>Richiesta inviata correttamente. <br />
Vi risponderemo al più presto.</h1>
<?php 
}
?>
<p> </p>
<form id="frm_contact" name="frm_contact" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
 <h1>COMPILA IL FORM</h1>
 <p>
   <label for="nome">Nome: <?php if (isset($missingArr) && in_array('nome', $missingArr)) { ?>
   <span class="errorMessage">Inserisci il Nome</span><?php } ?></label>
   <input name="nome" type="text" id="nome" size="30" 
   <?php if (isset($missingArr)){
	echo 'value="'.htmlentities($_POST['nome']).'"';
}
?>
   />
 </p>
 <p>
   <label for="cognome">Cognome: <?php if (isset($missingArr) && in_array('cognome', $missingArr)) { ?>
   <span class="errorMessage">Inserisci il Cognome</span><?php } ?></label>
   <input name="cognome" type="text" id="cognome" size="30" 
   <?php if (isset($missingArr)){
	echo 'value="'.htmlentities($_POST['cognome']).'"';
}
?>
   />
 </p>
 <p>
   <label for="email">Email: <?php if (isset($missingArr) && in_array('email', $missingArr)) { ?>
<span class="errorMessage">Inserisci l'email</span><?php } ?></label>
   <input name="email" type="text" id="email" size="30" 
   <?php if (isset($missingArr)){
	echo 'value="'.htmlentities($_POST['email']).'"';
}
?>
   />
 </p>


 <p>
   <label for="arrivo">Data di arrivo: <?php if (isset($missingArr) && in_array('arrivo', $missingArr)) { ?>
   <span class="errorMessage">Inserisci la data di arrivo</span><?php } ?></label>
   <input name="arrivo" type="text" id="arrivo" size="10" 
   <?php if (isset($missingArr)){
	echo 'value="'.htmlentities($_POST['arrivo']).'"';
}
?>
   />
 </p>
 <p>
  <label for="partenza">Data di partenza: <?php if (isset($missingArr) && in_array('partenza', $missingArr)) { ?>
  <span class="errorMessage">Inserisci la data di partenza</span><?php } ?></label>
   <input name="partenza" type="text" id="partenza" size="10" 
   <?php if (isset($missingArr)){
	echo 'value="'.htmlentities($_POST['partenza']).'"';
}
?>
   />
 </p>


<p>
   <label for="note">Note: <?php if (isset($missingArr) && in_array('note', $missingArr)) { ?>
   <span class="errorMessage">Inserisci la tua richiesta</span>
<?php } ?></label>
   <textarea name="note" id="note" cols="45" rows="5"><?php if (isset($missingArr)){
	echo htmlentities($_POST['note']);
}
?>
   </textarea>
</p>
 <p> </p>
 <p>
   <input type="submit" name="send" id="send" value="Invia" />
 </p>
</form>
</body>
</html>

Freelance graphic designer Firenze: www.andreapacini.it

Archivio Italiano della Rock Poster Art: www.italianposterrockart.com

Link al commento
Condividi su altri siti

della serie: come incasinarsi la vita per fare una cosa semplicissima.

ti consiglio di scriverti il codice da solo invece che di copiarlo da qualche parte in rete, anche perchè puoi ottenere lo stesso risultato in un quarto delle righe, senza dover utilizzare tutti quei cicli e quegli array

comunque è una buona regola tenere separate le pagine che eseguono codice da quelle che invece visualizza l'utente.

metti il form nella pagina "contatti.php"

fai puntare il form alla pagina "send_mail.php"

e fai che sendmail reindirizzi a contatti.php inviando in get le eventuali variabili che ti servono.

se hai qualche dubbio generico consulta www.php.net trovi tutta la documentazione che ti serve, compresa quella della funzione mail, che è l'unica che a te serve al momento.

sometimes it's just like teaching pigs how to fly

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...