Ciao,
ho provato a scrivere un form per l'invio mail. Purtroppo mi ritorna sempre il messaggio di compilare tutti i campi anche se sono tutti compilati. Non riesco a capire dove sia l'errore.
Questa la pagina di process:
Codice PHP:
// richiama il file di setting
require_once('settings.php');
if (isset($_POST['submit'])) {
// codice che processa il form
foreach ($_POST as $key => $value){
//elimina eventuali spazi aggiuntivi
$temp = trim($value);
//se è richiesta ma vuota, aggiungila all'array missing
if(!strlen($temp) && in_array($key, $required)){
array_push($missing, $key);
}
// se il campo è aspettato, setta la variabile associata
elseif(in_array($key, $expected)){
${$key} = htmlentities($temp);
}
}
if (empty($missing)) {
$contenuto_email = "Nome: $name\n\n";
$contenuto_email .= "Cognome: $surname\n\n";
$contenuto_email .= "Telefono: $tel\n\n";
$contenuto_email .= "Cellulare: $cel\n\n";
$contenuto_email .= "Messaggio:\n $mess\n\n";
// limita la lunghezza a 70 caratteri per la compatibilità
$contenuto_email = wordwrap($contenuto_email,70);
$contenuto_email .= "Autorizzazione: $yn\n\n";
// invia l'email
$mail_sent = mail($destinatario,$subject,$contenuto_email, 'From: '.$mail);
$info_message = '<p class="info">' . $info_mail_sent . '</p>';
if($mail_sent) {
// Se l'email viene inviata l'array missing non serve più quindi viene svuotato
unset($missing);
}
}
}
//se non sono stati compilati i campi obbligatori
if (isset($_POST['submit']) && isset($missing) && !empty($missing)) :
$info_message = '<p class="error">' . $error_missing_fields . '</p>';
elseif (isset($_POST['submit']) && $_POST['submit'] && !$mail_sent) :
// se ci sono stati problemi con l'invio della mail da parte del server
$info_message = '<p class="error">' . $error_mail_server . '</p>';
endif;
// Mostra una notifica d'errore e di conferma
if (isset($info_message) && strlen($info_message))
echo $info_message;
// richiama il form
require_once('form.php');
Questa la pagina settings:
Codice PHP:
//Messaggio di conferma invio mail
$info_mail_sent = 'La richiesta di contatti è stata inviata correttamente! La ricontatteremo il prima possibile.';
// Messaggio d'errore per campi mancanti
$error_missing_fields = 'Per favore, completate tutti i campi del form indicati';
// email del destinatario del form
$destinatario = 'miaemail@gmail.com';
// evita che qualcuno possa manomettere
// il form inserendo campi non previsti
$expected = array('name','surname','tel','cel','mail','subject','mess','yn');
// imposta i campi obbligatori
$required = array('name','surname','mail','subject','mess','yn');
// array vuoti per i campi obbligatori mancanti
$missing = array();
Questa la pagina del form:
Codice PHP:
<form id="form_contact" action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
[list=1] [*]
<label for="name">Nome <abbr title="Campo obbligatorio">*</abbr></label>
<input type="text" name="name" tabindex="1" value="<?php if (isset($missing) && isset($name)) echo $name; ?>" class="<?php if (isset($missing) && in_array('name',$missing)) echo 'error'; ?>" />
[*]
<label for="surname">Cognome <abbr title="Campo obbligatorio">*</abbr></label>
<input type="text" name="surname" tabindex="2" value="<?php if (isset($missing) && isset($surname)) echo $surname; ?>" class="<?php if (isset($missing) && in_array('surname',$missing)) echo 'error'; ?>" />
[*]
<label for="tel">Telefono</label>
<input type="text" name="tel" tabindex="3" value="<?php if (isset($missing) && isset($tel)) echo $tel; ?>" class="<?php if (isset($missing) && in_array('tel',$missing)) echo 'error'; ?>" />
[*]
<label for="cel">Cellulare</label>
<input type="text" name="cel" tabindex="4" value="<?php if (isset($missing) && isset($cel)) echo $cel; ?>" class="<?php if (isset($missing) && in_array('cel',$missing)) echo 'error'; ?>" />
[*]
<label for="mail">Email <abbr title="Campo obbligatorio">*</abbr></label>
<input type="text" name="mail" tabindex="5" value="<?php if (isset($missing) && isset($mail)) echo $mail; ?>" class="<?php if (isset($missing) && in_array('mail',$missing)) echo 'error'; ?>" />
[*]
<label for="subject">Oggetto richiesta <abbr title="Campo obbligatorio">*</abbr></label>
<select name="subject" tabindex="6" class="<?php if (isset($missing) && in_array('subject',$missing)) echo 'missing'; ?>">
<option selected>- Scegli -</option>
<option value="<?php if (isset($missing) && isset($subject)) echo $subject; ?>">Richiesta 1</option>
<option value="<?php if (isset($missing) && isset($subject)) echo $subject; ?>">Richiesta 2</option>
<option value="<?php if (isset($missing) && isset($subject)) echo $subject; ?>">Richiesta 3</option>
</select>
[*]
<label for="mess">Messaggio <abbr title="Campo obbligatorio">*</abbr></label> <textarea name="mess" tabindex="7" class="<?php if (isset($missing) && in_array('mess',$missing)) echo 'error'; ?>"><?php if (isset($missing) && isset($mess)) echo $mess; ?></textarea>
[*]
<label for="priv">Informativa sulla privacy <abbr title="Campo obbligatorio">*</abbr></label> <textarea>Testo privacy</textarea>
[*]
<label id="auth" for="yn">
<input type="radio" name="yn" tabindex="8" checked="checked" value="<?php if (isset($missing) && isset($yn)) echo $yn; ?>" class="<?php if (isset($missing) && in_array('yn',$missing)) echo 'error'; ?>" /> Autorizzo
<input type="radio" name="yn" tabindex="9" value="<?php if (isset($missing) && isset($yn)) echo $yn; ?>" class="<?php if (isset($missing) && in_array('yn',$missing)) echo 'error'; ?>" /> Non autorizzo</label>
[/list]
<p class="controls">
<input type="submit" name="submit" tabindex="10" value="Invia richiesta" />
</p>
</form>