• User

    Problema lettere accentate in form email

    Un saluto a tutti. Da giorni sto cercando di risolvere un problema fastidioso, riguardante le lettere accentate nel form email. La causa da quanto ho capito è il charset, visto che il mio sito utilizza l'utf-8. Modificandolo in ISO-8859-1 questo inconveniente si risolve, ma sballa la codifica del testo della pagina sostituendo i caratteri speciali con strani simboli. Spero che qualcuno di voi mi possa aiutare, perchè non so proprio come fare. Vi posto il codice del file "send.php"

    <?PHP
    /*Impostazioni e controllo campi*/
    $ip = $_POST['ip'];
    $httpref = $_POST['httpref'];
    $httpagent = $_POST['httpagent'];
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $url = $_POST['url'];
    $mail = $_POST['mail'];
    $testo = $_POST['testo'];
    $oggetto = $_POST['oggetto'];
    session_start(); 
    $utente = $_POST['captcha']; 
    $validato = $_SESSION['veri'];
    
    
    if(empty($nome) || empty($cognome) || empty($mail) || empty($testo)) {
    echo "<img src='layout/not_send.jpg' width='48' height='48' alt='Errore' class='image_display' /><h2 class='t_center'>Compila tutti i campi del form</h2>\n";
    die ("<h2 class='t_center'>Torna indietro!</h2>");
    }
    if(!$mail == "" && (!strstr($mail,"@") || !strstr($mail,".")))
    {
    echo "<img src='layout/not_send.jpg' width='48' height='48' alt='Errore' class='image_display' /><h2 class='t_center'>Inserisci un'email valida!</h2>\n";
    $badinput = "<h2 class='t_center'>Messaggio non inviato!</h2>\n";
    echo $badinput;
    die ("<h2 class='t_center'>Torna indietro!!</h2>");
    }
    if (eregi('Seleziona', $oggetto)) {
    die ("<img src='layout/not_send.jpg' width='48' height='48' alt='Errore' class='image_display' /><h2 class='t_center'>Seleziona il motivo del contatto!</h2>");
    }
    if(!$url == "" && (!strstr($url,"h t t p : / /")))
    {
    echo "<img src='layout/not_send.jpg' width='48' height='48' alt='Errore' class='image_display' /><h2 class='t_center'>Inserisci un url valido completo di h t t p :/ /!</h2>\n";
    $badinput = "<h2 class='t_center'>Messaggio non inviato!</h2>\n";
    echo $badinput;
    die ("<h2 class='t_center'>Torna indietro!!</h2>");
    }
    if (eregi('http:', $testo)) {
    die ("<img src='layout/not_send.jpg' width='48' height='48' alt='Errore' class='image_display' /><h2 class='t_center'>E' vietato inserire url nel campo messaggio!</h2>");
    }
    if($utente == $validato){ 
    }else{ 
    $badinput = "<img src='layout/not_send.jpg' width='48' height='48' alt='Errore' class='image_display' /><h2 class='t_center'>Codice di verifica non corretto o non inserito!</h2>\n";
    echo $badinput;
    die ("<h2 class='t_center'>Torna indietro!</h2>");
    }
    
    $todayis = date("d, m, Y, g:i a") ;
    $oggetto = $oggetto;
    $subject = $oggetto;
    $testo = stripcslashes($testo);
    
    /*Impostazioni messaggio amministratore*/
    $da = "From: $mail\r\n";
    $message = "Data contatto: $todayis \n
    Da: $nome ($mail)\n
    Cognome: $cognome \n
    Url: $url \n
    Messaggio: $testo \n
    Informazioni addizionali: IP = $ip \n
    Browser Info: $httpagent \n
    Referral: $httpref \n";
    mail("[email protected]", $subject, $message, $da, $url);
    
    /*Impostazioni messaggio pubblico*/
    $dal_sito = "From: [email protected]\r\n";
    mail("$mail\n","Conferma: messaggio inviato!","Gentile $nome, lo staff di miosito.com, risponderà alla tua richiesta nel più breve tempo possibile.
    
    Un saluto! Lo Staff di miosito.com", $dal_sito);
    ?>
    
    <img src="layout/ok.jpg" width="48" height="48" alt="Inviato!" class="image_display" /><h2 class="t_center">
    Grazie per averci contattato: <?PHP echo $nome ?><br />
    Un'email di notifica è stata inviata all'indirizzo: <em>&quot;<?PHP echo $mail ?>&quot;.</em></h2>
    <p class="t_center"><a href="contattaci.php">Torna indietro</a></p>
    ```Vi ringrazio in anticipo!

  • User

    ho risolto finalmente, bastava dichiarare gli headers. 😉


  • User Attivo

    Ciao come lo hai risolto?
    Grazie


  • User

    ho modificato questa parte di codice:

    /*Impostazioni messaggio amministratore*/
    $headers = "MIME-Version: 1.0\n".
    "Content-type: text/html; charset=utf-8\n".
    "From: $nome <$mail>\n";
    
    $message = "<strong>Data contatto:</strong> $todayis \n<br />
    <strong>Da:</strong> $nome ($mail)\n<br />
    <strong>Cognome:</strong> $cognome \n<br />
    <strong>Url:</strong> $url \n<br />
    <strong>Messaggio:</strong> $testo \n<br />
    <strong>Informazioni addizionali:</strong> IP = $ip \n<br />
    <strong>Browser Info:</strong> $httpagent \n<br />
    <strong>Referral:</strong> $httpref \n";
    mail("Webmaster <[email protected]>", $oggetto, "<p>$message</p>", $headers);
    
    /*Impostazioni messaggio pubblico*/
    $headers_p = "MIME-Version: 1.0\n".
    "Content-type: text/html; charset=utf-8\n".
    "From: Webmaster <[email protected]>\n";
    
    mail("$mail\n","Conferma: messaggio inviato!","<p>Gentile $nome, lo staff di miosito.com, risponderà alla tua richiesta nel più breve tempo possibile.</p>
    <p>Un saluto! <font color='#cdcdcd'>Lo Staff di miosito.com</font></p>", $headers_p );
    ```In questo modo l'email arriverà sia a te webmaster che all'utente, in formato html codificato in UTF-8. ;)