+ Rispondi alla Discussione
Risultati da 1 a 4 di 4

Form mail php - problema caratteri accentati.

Ultimo Messaggio di Francesco Di Caprio il:
  1. #1
    User Newbie
    Data Registrazione
    Oct 2012
    Località
    Sardinia
    Messaggi
    3

    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 &egrave 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

    Codice 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="mail1@mail.it";
     break;
        case 
    'mail2'$destinatario=mail2@mail.it;
     break;
        default: 
    $destinatario=default@mail.it;
     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';
     
    ?>
    form.php

    Codice 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>
    settings.php

    Codice 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 &egrave; verificato un errore e
      l\'email non &egrave; stata inviata. Riprovate pi&ugrave; 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();
       
    ?>
    Grazie a chi mi aiuterà
    Ultima modifica di Luis82; 30-10-12 alle 13:54

  2. #2
    User Newbie
    Data Registrazione
    Oct 2012
    Località
    Sardinia
    Messaggi
    3
    Ciao a tutti, nessuno mi sa dare una mano? Proprio non riesco a risolvere..

  3. #3
    User Newbie
    Data Registrazione
    May 2013
    Località
    udine
    Messaggi
    3
    ciao a tutti
    volevo chiedervi come potevo inserire il controllo della mail con i caratteri tipo "("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})"
    perche nel esempio fa il controllo solo del campo s'è vuoto. io volevo inserire il controllo s'è vuoto in piu s'è un indirizzo email.
    value="<?php if ( isset( $missing ) && isset($email) ) echo $email; ?>"
    class="<?php if (isset( $missing ) && in_array('email',$missing))
    echo
    'error';

    qualcuno puo darmi una mano?
    un saluto

  4. #4
    User L'avatar di Francesco Di Caprio
    Data Registrazione
    Mar 2013
    Località
    Caserta
    Messaggi
    216
    Segui Francesco Di Caprio su Twitter Aggiungi Francesco Di Caprio su Google+ Aggiungi Francesco Di Caprio su Facebook Aggiungi Francesco Di Caprio su Linkedin
    Codice PHP:
    if (filter_var($emailFILTER_VALIDATE_EMAIL)) echo "Email valida";
    else echo 
    "Email non valida"
    Endelab - Web Development

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.