Ciao a tutti, nessuno mi sa dare una mano? Proprio non riesco a risolvere..
luis82
@luis82
Post creati da luis82
-
RE: Form mail php - problema caratteri accentati.
-
Form mail php - problema caratteri accentati.
Ciao a tutti, sto utilizzando un semplice form mail in php che mi permette di scegliere il destinatario da un menù. Funziona tutto perfettamente ma c'è un piccolo problema, chi riceve la mail inviata dal sito non vede le lettere accentate ma si ritrova il codice come fosse html, per intenderci se io invio il messaggio "questa è una prova", il destinatario riceverà "questa è una prova".
Come posso ovviare? Nelle pagine in cui è inserito l'include a contatti.php ho già da tempo messo <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> e quindi pensavo di non avere problemi.
Riporto il codice dello script, magari torna utile anche ad altri. (l'ho preso da un altro sito, non so se posso segnalarlo, e modificato grazie anche all'autore)
**
contatti.php
**
[PHP]
<?php
require_once 'settings.php';
if(isset($_POST['submit'])){
foreach ($_POST as $key => $value){
//elimina eventuali spazi aggiuntivi
$temp = $value ? 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); //in questo caso crea $nome, $email, $sito, $commento
}
}
switch ($_POST['destinatario']){
case 'mail1': $destinatario="[email protected]";
break;
case 'mail2': [email protected];
break;
default: [email protected];
break;
}
if ( empty($missing) ){
//Se l'array missing vuoto, vuol dire che sono stati inseriti i valori
//obbligatori. Costruisco il messaggio
$contenuto_email = "Nome: $nome\n\n"; //Queste variabili sono create nel passaggio precedente
$contenuto_email .= "Email: $email\n\n";
$contenuto_email .= "Messaggio:\n $messaggio\n\n";
//limita la lunghezza a 70 caratteri per la compatibilità
$contenuto_email = wordwrap($contenuto_email,70);
//invia l'email
$mail_sent = mail($destinatario,$oggetto,$contenuto_email, 'From: '.$email);
$info_message = '<p class="info">' . $info_mail_sent . '</p>';
if($mail_sent){
//Se l'email viene inviata l'array missing non serve più quindi lo svuoto
unset($missing);
}
}
}
//se non sono stati immessi campi obbligatori
if ( isset( $_POST['submit'] ) && isset($missing) && !empty($missing)) :
$info_message = '<p class="error">' . $error_missing_fields . '</p>';
elseif ($_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 sia d'errore che di conferma
if ( isset( $info_message ) && strlen( $info_message ) ) echo $info_message;
//Include il form
require_once 'form.php';
?>
[/PHP]**form.php
**[PHP]
<form action="<?php basename($_SERVER['PHP_SELF']) ?>" method="post" id="formYIW">
<fieldset>
<legend><span>Contattaci</span></legend>
<ul type="square">
<li>
<label for="nome">Nome <abbr title="campo obbligatorio"></abbr></label>
<input type="text" name="nome" id="nome" tabindex="1"
value="<?php if ( isset( $missing ) && isset($nome) ) echo $nome; ?>"
class="<?php if (isset( $missing ) && in_array('nome',$missing))
echo 'error';
?>"/>
</li>
<li>
<label for="email">Email <abbr title="campo obbligatorio"></abbr></label>
<input type="text" name="email" id="email" tabindex="2"
value="<?php if ( isset( $missing ) && isset($email) ) echo $email; ?>"
class="<?php if (isset( $missing ) && in_array('email',$missing))
echo 'error';
?>"/>
</li>
<li>
<label for="destinatario">Destinatario</label>
<select name="destinatario" id="destinatario" tabindex="3">
<option>SCELTA DESTINATARIO</option>
<option value="mail1">Destinatario 1</option>
<option value="mail2">Destinatario 2</option>
</select>
</option>
</li>
<li>
<label for="messaggio">Messaggio <abbr title="campo obbligatorio">*</abbr></label>
<textarea name="messaggio" id="messaggio" rows="10" cols="30" tabindex="4"
class="<?php if (isset( $missing ) && in_array('messaggio',$missing))
echo 'error';
?>"><?php if ( isset( $missing ) && isset($messaggio) ) echo $messaggio; ?></textarea>
</li>
</ul>- Campi obbligatori
</fieldset>
<p class="controls">
<input type="submit" name="submit" id="submit" value="Invia Mail" tabindex="5">
</p>
</form>
[/PHP]
**settings.php
**[PHP]
<?php
ini_set('display_errors', 'On');
ini_set('error_reporting', E_ALL & ~E_NOTICE);
//oggetto dell'email inviata
$oggetto = 'Mail inviata dal sito';
//Messaggio d'errore per campi mancanti
//Error message for missing fields
$error_missing_fields= 'Per favore, completate tutti i campi del form indicati';
//Messaggio d'errore del server mail
//Error message for mail server
$error_mail_server = 'Siamo spiacenti. Si è verificato un errore e
l'email non è stata inviata. Riprovate più tardi.';
//Messaggio di conferma invio mail
//Info message for correct mail sent
$info_mail_sent = 'L'email e' stata inviata correttamente!';/* Se il form stato inviato, elenca i campi che ci si aspetta di ricevere.
Evita che qualcuno possa aggiungere dei campi non previsti */
$expected = array('nome','email','sito','messaggio');
//imposta i campi obbligatori
$required = array('nome','email','messaggio');
//crea un array vuoto per i campi mancanti
$missing = array();?>
[/PHP]Grazie a chi mi aiuterà
- Campi obbligatori
-
RE: [Tutorial] Gestione di un form mail semplice
Ciao a tutti, utilissimo script ma avrei una richiesta:
è possibile inserire un modulo per la scelta del destinatario? Per intenderci qualcosa tipo questa: ```
htt*://biomol.altervista.org/contatti.html -
Salve a tutti
Appena iscritto in questa bella community, spero di poter trovare tanti utili suggerimenti e, se possibile, ricambiare ^_^