Salve a tutti!
Ho creato un form di iscrizione che se compilato mi invia una mail.
Per evitare errori da parte di chi lo compila ho creato una pagina che funge da anteprima.
Ho un problema però con i cognomi che hanno l'apostrofo.
Nella prima prima pagina ho creato un semplice form che invia i dati alla seconda pagina che deve sia visualizzare i valori precedentemente scritti che inviare tramite un tasto conferma la mail vera e propria.
Ecco i punti del codice che mi interessa farvi vedere:
Codice PHP:
<?
//qui ho richiamato i valori
$cognome = $_POST['cognome'];
//inserisco la funzione stripslashes per visualizzare gli apostrofi eventuali (e infatti funziona)
$cognome = stripslashes($cognome);
//se non scrivo niente mi avvisa
if (trim($cognome) == ""):
echo "campo non compilato";
//altrimenti mi fa vedere i miei dati per la conferma
else:
echo "$cognome";
?>
Fin qui tutto ok. La pagina mi visualizza correttamente i cognomi che hanno l'apostrofo, ad es. O'Neil
Per inviare i dati alla pagina succesiva ho aggiunto un form di tipo hidden così:
codice:
<form id="webiscrizione" action="webiscrizione-conferma.php" method="POST" onsubmit="return check()">
<input type="hidden" name="cognome" value='<?echo $cognome?>' />
<input class="pulsanti" type="submit" value="Conferma">
</form>
La pagina tre, che ho chiamato "webiscrizione-conferma.php" ha questo codiche (preso paro paro da queste pagine e lievemente modificato):
Codice PHP:
<?
$cognome = $_POST['cognome'];
// L'INDIRIZZO DEL DESTINATARIO DELLA MAIL
$to = "mioindirizzo@email.it";
// IL SOGGETTO DELLA MAIL
$subject = "ISCRIZIONE: $nome $cognome";
// COSTRUIAMO IL CORPO DEL MESSAGGIO
$body = "Questa iscrizione è stata inviata utilizzando il modulo web bla bla bla";
$body .= "Nome: " . $nome. "\n";
$body .= "Cognome: " . $cognome. "\n";
$body .= "Data di nascita: " . $giorno."/". $mese."/". $anno. "\n";
$body .= "Indirizzo: " . $indirizzo. "\n";
$body .= "CAP: " . $codicepostale. "\n";
$body .= "Comune: " . $comune. "\n";
$body .= "Provincia: " . $provincia. "\n";
$body .= "Recapito telefonico: " . $tel. "\n";
$body .= "Indirizzo e-mail: " . $mail. "\n\n";
$body .= "Note: " . $note. "\n";
// INTESTAZIONI SUPPLEMENTARI
$headers = "From: $nome $cognome<$mail>";
// INVIO DELLA MAIL
if(@mail($to, $subject, $body, $headers)) { // SE L'INOLTRO E' ANDATO A BUON FINE...
echo "<h4>Grazie $nome, la tua domanda di iscrizione è stata inoltrata con successo.</h4>";
} else {// ALTRIMENTI...
echo "<h4>Spiacenti $nome, si sono verificati dei problemi nell'invio del modulo di iscrizione.</h4>";
}
?>
La mail mi arriva correttamente ma il cognome, nel nostro esempio "O'Neill" diventa "O" e non capisco come mai. Ho smanettato con le varie funzioni addslashes, stripslashes.. ma non riesco a risolvere il problema! Sono ancora agli inizi e purtroppo mi sono arenato. Se serve posso postate tutte le pagine.
Grazie e spero in un vostro aiuto!
Ciao