• User

    Script invio email tramite form

    Salve a tutti, innanzitutto chiedo scusa se l'argomento è stato già trattato ma sono due giorni che cerco su google e forum vari.

    Il mio problema è il seguente:

    Io ho creato un form e, tramite sript java controllo se i campi sono stati compilati correttamente poi se così è vanno a finire su un file inviamail.php il quale prende i campi li invia all'indirizzo indicato.

    Il mio problema sorge nel momento in cui un utente inserisce una lettere accentata e però questa parola mi viene spedita con carattere strani, ad esempio la à diventa à e così via.

    Ho provato ad inserire il comando htmlenties ma senza risultato.

    Spero possiate aiutarmi, di seguito metto il codice da me usato

    [PHP]<?php
    $email=$_POST['email'];

    #######################################

    IMPOSTAZIONI DA CONFIGURARE

    #######################################

    //(1) indirizzo email del destinatario del modulo
    $destinatario = "";

    //(2) indirizzo email del mittente, campo FROM
    // non toccare se desiderate che l'indirizzo email inserito nel modulo sia
    // riportato nel campo DA del messaggio che sarà ricevuto.
    // Se invece desiderate un campo fisso annullare la prima riga e abilitare
    // la seconda inserendo la dicitura desiderata (per annullare mettere //
    // all'inizio della prima riga e per abilitare togliere // dalla seconda riga)
    $nome_mittente = "$email";
    // $nome_mittente = "Dal Modulo";

    //(3) oggetto del messaggio
    $oggetto_email = "Contatto web ENG";

    //(4) se si vogliono rendere tutti i campi NON OBBLIGATORI impostare su "y".
    // (valori possibili: "y" e "n")
    $all_free = "n";

    //(5) se avete messo "n" al punto (4) inserire tra virgolette, separati
    // da virgola, i nomi dei campi da rendere OBBLIGATORI
    // Esempio: $campi_req = array("nome","telefono","via");
    $campi_req = array("nome","email");

    //(6) controllo validità del campo email. (valori possibili: "y" e "n")
    $obbligo_email = "y";

    //(7) obbligare l'utente ad accettare le condizioni.
    // (valori possibili: "y" e "n")
    $accetta_condizioni = "n";

    //(8) URL della pagina di ringraziamento
    $pagina_grazie = "success.htm";

    //(9) URL della pagina errore campi vuoti
    $pagina_error_empty = "successo.htm";

    //(10) URL della pagina errore email
    $pagina_error_email = "";

    //(11) URL della pagina errore condizioni non accettate
    $pagina_error_condizioni = "";

    //(12) URL della pagina errore invio non autorizzato (mancanza di referer)
    $pagina_error_referer = "";

    #######################################

    FINE IMPOSTAZIONI DA CONFIGURARE

    #######################################

    //ora e data
    $ora = date ("H:i:s");
    $data = date ("d/m/Y");

    //intestazione email che arriva al destinatario
    $corpo = "
    Modulo inviato il $data alle ore $ora \n

    Riepilogo dati:\n\n";

    //============== NON TOCCARE NULLA OLTRE QUESTA RIGA ==================\

    ########### CODICI ###########

    //variabili per rendere lo script compatibile anche con la versione PHP 4.2 e maggiori
    if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER, $HTTP_SERVER_VARS))){
    $_POST = &$HTTP_POST_VARS;
    }

    //prende IP ADDRESS
    if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){

    if ($_SERVER["HTTP_X_FORWARDED_FOR"] == "") {
    

    $ipnumb = getenv("REMOTE_ADDR");

    	}else {
    

    $ipnumb = getenv("HTTP_X_FORWARDED_FOR");

    		}
    
    	} else {
    

    $ipnumb = getenv("REMOTE_ADDR");
    }
    ###################################

    //controllo referer
    if(empty($_SERVER["HTTP_REFERER"])){

    header ("Location: $pagina_error_referer");
    exit();
    
    }
    

    ########### INVIO EMAIL ###########
    if($control_campi == 0){

        if($control_email == 0){
    
            if($control_condizioni == 0){
    

    foreach($_POST as $key => $valore){

    $key = ucfirst(stripslashes(trim($key)));
    $valore = stripslashes(trim($valore));
    $key = str_replace("_"," ",$key);
    $key = htmlspecialchars($key);

            if(trim($valore) == "") $valore = "Non compilato";
            
                $corpo .= $key .": ". $valore ."\n\n";
    
            }
    		
    			$corpo .= "Numero IP: $ipnumb"."\n";
    

    $corpo .= "____________________________________________________________ \n\n

    ";

    // invio e-mail
    // Header Mail
    $headmail.="From: $nome_mittente <$nome_mittente>\n";
    $headmail.="Return-Path: $nome_mittente\n";
    $headmail.="User-Agent: Php Mail Function\n";
    $headmail.="X-Accept-Language: en-us, en\n";
    $headmail.="MIME-Version: 1.0\n";
    $headmail.="X-Priority: 1 (Highest)\n";
    $headmail.="Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n";
    $headmail.="Content-Transfer-Encoding: 7bit\n";

    ini_set('sendmail_from', "$destinatario");
    mail("$destinatario", "$oggetto_email", "$corpo", "$headmail");

                header ("Location: $pagina_grazie");
    
                                } else {
    
                header ("Location: $pagina_error_condizioni");
    
                            }
    
                        } else {
    
                header ("Location: $pagina_error_email");
    
                        }
    
                    } else {
    
                    
                header ("Location: $pagina_error_empty");
    
                    }
    

    ?>[/PHP]


  • ModSenior

    Ciao djmatto,
    inserisci come codifica della pagina html che invia il form utf-8.


  • User Attivo

    Probabile che il problema sia questa riga:
    [php]
    $headmail.="Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n";
    [/php]Verifica che il charset indicato (iso-8859-1) corrisponda a quello della pagina html del form (probabile sia utf-8)

    :ciauz:


  • User Newbie

    ciao a tutti ragazzI!!:)

    sto costruendo un sito web per un hotel e adesso mi serve creare un form che permetta agli utenti di inviare un messaggio al gestore dell hotel... ho creato un form semplice, senza validazione etc etc con i seguenti campi, su html:
    nome
    cognome
    email
    telefono
    fax
    testo
    invio

    poi ho creato un contact.php dove ho inserito questi codici

    <?php
    $destinatario = "[email protected]";
    $oggetto = "email inviata dal mio sito";

    $messaggio = "Nome $ Nome\n";
    $messaggio .= "Cognome $ Cognome\n";
    $messaggio .= "Email $ Email\n";
    $messaggio .= "Telefono $ Telefono\n";
    $messaggio .= "Fax $ Fax\n";
    $messaggio .= "$ Testo";

    $da = $email;
    $intestazioni ="From:$da";
    mail ($destinatario,$oggetto,$messaggio,$intestazioni);

    ?>
    come risultato mi arriva l' email, dunque funziona.... ma c'è un problema, credo, con le variabili. nel messaggio, su messenger, mi stampa questo:

    Nome $ Nome
    Cognome $ Cognome
    Email $ Email
    Telefono $ Telefono
    Fax $ Fax
    $ Testo

    quando invece vorrei che in nome ci fosse ad esempio Ciccio
    al cognome un cognome ad esempio Rossi
    e così via....
    qualcuno può aiutarmi? grazie


  • User

    togli lo spazio tra il simbolo $ e il nome della variabile
    non ho capito perchè hai inserito $ Nome invece di $Nome


  • User Newbie

    l ho reimpostato in questo modo ma al solito mi arriva il messaggio senza il contenuto delle variabili..

    <body>
    <?php
    $destinatario="[email protected]";
    $oggetto="email inviata dal mio sito";

    $messaggio="Nome $Nome\n";
    $messaggio.="Cognome $Cognome\n";
    $messaggio.="Email $Email\n";
    $messaggio.="Telefono $Telefono\n";
    $messaggio.="Fax $Fax\n";
    $messaggio.="$Testo";

    $da=$email;
    $intestazioni="From:$da";
    mail($destinatario,$oggetto,$messaggio,$intestazioni);

    ?>

    <p>Messaggio inviato con successo</p>
    </body>


  • User

    prova a racchiudere le variabili $Nome ecc. tra due parentesi graffe {$Nome}


  • User Newbie

    non cambia nulla ....mi compaiono solo i campi senza altro nel messaggio che mi arriva
    ma potete riscrivermelo voi un codice(in php) e un form html con i seguenti campi?
    nome , cognome, fax, telefono, email, testo.. per favore
    già che ci siete, al fine di imparare, potreste mettere anche a cosa servono ?
    grazie


  • User

    Giusto una curiosità scrivi il codice php in questo modo:

    Mi raccomando ricordati di pulire e validare i vari campi!

    Script come questo non sono facili da creare possono contenere varie vulnerabilità quindi io ti consiglierei di cercare qualche script più sicuro
    provando a cercare su google...

    [PHP]<body>
    <?php
    $Nome = $_POST['nome'];
    $Cognome = $_POST['cognome'];
    $Email =$_POST['email'];
    $Telefono =$_POST['telefono'];
    $Fax =$_POST['fax'];
    $Testo =$_POST['testo'];

    $destinatario="[email protected]";
    $oggetto="email inviata dal mio sito";

    $messaggio="Nome $Nome\n";
    $messaggio.="Cognome $Cognome\n";
    $messaggio.="Email $Email\n";
    $messaggio.="Telefono $Telefono\n";
    $messaggio.="Fax $Fax\n";
    $messaggio.="$Testo";

    $da=$Email;
    $intestazioni="From:$da";
    mail($destinatario,$oggetto,$messaggio,$intestazio ni);

    ?>

    <p>Messaggio inviato con successo</p>
    </body>
    [/PHP]


  • User Newbie

    molte grazie adesso funziona tutto 🙂 bello!!!!
    adesso vi chiedo: se aggiungo un altro campo di testo cosa devo aggiungere nel codice php? ancora grazie 🙂


  • User

    se nel campo html del form aggiungi un altro campo:

    [HTML]<input type="text" name="testo_aggiuntivo" value="">[/HTML]

    in php devi poterne recperare il valore cosi:

    [PHP]
    // $_POST[ qui il nome deve essere uguale a quello inserito nel campo name="testo_aggiuntivo" ]
    $test_aggiuntivo = $_POST['testo_aggiuntivo'];
    [/PHP]


  • User Newbie

    ciao a tutti
    stavo costruendo una pagina html nel mio sito ed ho deciso di introdurre
    un calendario. Ho trovato questo ://javascript.html.it/demo/javascript/833/esempio.htm che mi sembra molto simpatico.
    ho salvato i js insieme a tutti i js. ho associato i css tutto ok ma quando clicco sul quadratino per far aprire la finestra con le date mi compare troppo in basso e si vede solo una parte del calendario. a cosa è dovuto? problemi di spazio? il calendario è introdotto in una colonna, all interno di un form....mi consigliate un calendario diverso...? grazie in anticipo!!!


  • User Newbie

    ciao a tutti ho qualche problema nel validare il form...
    qualche giorno fà ho seguito un videotutorial che prevedeva l uso di spry per la validazione.
    Ho seguito passo passo le istruzioni ed effettivamente se mando in locale, tramite firefox, la pagina html del form spry funziona, devo solo migliorare la grafica andando su css di spry..
    fatto ciò, avendo un host gratuito su altervista ho deciso di provare il mio form, con il collegamento alla classica pagina php, css di spry etc...quindi lato server, ma la validazione non funziona!
    inoltre il messaggio lo invia ugualmente anche senza la necessaria compilazione del form per intero nei relativi campi che la richiedono, la validazione.
    dicevo, il messaggio arriva ma senza a fianco i dati inseriti nei campi o variabili, tecnicamente parlando, da parte dell' utente... come potrei risolvere il problema? magari avete un consiglio un link utile per le validazioni? grazie 🙂