Form by mail con allegato

di il
1 risposte

Form by mail con allegato

Ciao a tutti,
su un sito ho implementato un form by mail semplice in php; il cliente mi chiede se fosse possibile aggiungere anche la possibilità di poter far inserire un allegato (file unico in pdf) all'interno dello stesso form
Conoscete x caso un modo semplice per poterlo fare?
Grazie
(Se serve, posso postare il codice php)

1 Risposte

  • Re: Form by mail con allegato

    Questa è la parte HTML

    <div class="appointment-area">
    <div class="container-fluid">
    <div class="row">
    <div class="col-md-12 col-lg-5 p-0">
    <div class="contant-number">
    </div>
    </div>
    <div class="col-md-12 col-lg-7 p-0">
    <div class="appointment-form">
    <h2 class="title">Richiesta cartella clinica</h2>
    <form enctype="multipart/form-data" method="post" action="inviamail.php">
    <div class="row">
    <div class="col-md-6 col-lg-6 pr-10">
    <div class="form-group">
    <input type="text" class="form-control" name="nome" placeholder="Nome e Cognome" required>
    </div>
    </div>

    <div class="col-md-6 col-lg-6 pl-10">
    <div class="form-group">
    <input type="text" class="form-control" name="email" placeholder="Email" required>
    </div>
    </div>

    <div class="col-md-6 col-lg-6 pr-10">
    <div class="form-group">
    <input type="text" class="form-control" name="telefono" placeholder="Telefono di contatto" required>
    </div>
    </div>
    <div class="col-md-6 col-lg-6 pl-10">
    <div class="form-group">
    <select class="form-control" name="Metodo di pagamento">
    <option>Seleziona il metodo di pagamento desiderato</option>
    <option>Bonifico</option>
    <option>Pay Pal</option>
    </select>
    </div>
    </div>
    <div class="col-md-6 col-lg-6 pr-10">
    <div class="form-group">
    <input type="text" class="form-control" name="InizioDegenza" placeholder="Data Inizio Degenza" required>
    </div>
    </div>
    <div class="col-md-6 col-lg-6 pr-10">
    <div class="form-group">
    <input type="text" class="form-control" name="FineDegenza" placeholder="Data Fine Degenza" required>
    </div>
    </div>
    <div class="col-md-6 col-lg-12 pr-10"><h7>Si prega di indicare gli estremi del medesimo documento presentato in fase di ricovero</h7></div>
    <div class="col-md-6 col-lg-6 pr-10">
    <div class="form-group">
    <input type="text" class="form-control" name="TipoDocumento" placeholder="Tipologia Documento" required>
    </div>
    </div>
    <div class="col-md-6 col-lg-6 pr-10">
    <div class="form-group">
    <input type="text" class="form-control" name="NumeroDocumento" placeholder="Numero del Documento" required>
    </div>
    </div>
    <div class="col-md-6 col-lg-6 pr-10">
    <div class="form-group">
    <input type="file" name="allegato" required>
    </div>
    </div>

    </div>
    <div>Dichiaro di aver letto ed accettato la <a href="../Privacy.html">Privacy Policy</a> e presto il consenso al trattamento dei miei dati personali <input type="checkbox" name="Dichiaro di aver letto ed accettato la Privacy Policy e presto il consenso al trattamento dei miei dati personali" placeholder="" required=""></div>
    <button type="submit" class="btn book-now-btn">Richiedi ora</button>
    </form>
    </div>
    </div>
    </div>
    </div>
    </div>


    Mentre il php è questo

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

    #######################################
    # IMPOSTAZIONI DA CONFIGURARE #
    #######################################

    //(1) indirizzo email del destinatario del modulo
    $destinatario = "info@lofficinadelweb2017.it";

    //(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 = "Richiesta cartella clinica online";

    //(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 = "https://www.cdcsantafamiglia.it/Prenotazioni/Risposta.html";

    //(9) URL della pagina errore campi vuoti
    $pagina_error_empty = "http://www.tuo_sito.tld/errore_campi_vuoti.htm";

    //(10) URL della pagina errore email
    $pagina_error_email = "http://www.tuo_sito.tld/errore_email.htm";

    //(11) URL della pagina errore condizioni non accettate
    $pagina_error_condizioni = "http://www.tuo_sito.tld/errore_condizioni.htm";

    //(12) URL della pagina errore invio non autorizzato (mancanza di referer)
    $pagina_error_referer = "http://www.tuo_sito.tld/errore_referer.htm";

    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];
    if (is_uploaded_file($allegato))
    {
    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);
    $data = chunk_split(base64_encode($data));
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary=\"{$mime_boundary}\"";
    $msg .= "This is a multi-part message in MIME format.\n\n";
    $msg .= "--{$mime_boundary}\n";
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= $mail_body . "\n\n";
    $msg .= "--{$mime_boundary}\n";
    $msg .= "Content-Disposition: attachment; filename=\"{$allegato_name}\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $data . "\n\n";
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
    $msg = $mail_body;
    }
    #######################################
    # 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
    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();

    }

    ########### CONTROLLO DEI CAMPI ###########
    $control_campi = 0;

    if($all_free != "y"){

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

    if(in_array($key,$campi_req)){

    if(trim($valore) == ""){

    $control_campi++;

    }

    }

    }

    } else {

    $control_campi = 0;

    }

    ########### CONTROLLO EMAIL ###########
    $control_email = 0;

    if($obbligo_email == "y"){

    if(isset($_POST['email'])){

    if(!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){

    $control_email++;

    }

    } else {

    $control_email = 0;

    }

    }

    ########### 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);

    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", $nome_mittente);
    mail($destinatario, $oggetto_email, $corpo, $headmail);
    ini_set('sendmail_from', "$destinatario");
    mail("$nome_mittente", "Richiesta documentazione per invio cartella clinica", "Grazie per aver utilizzato il sistema automatico di richiesta copia conforme cartelle cliniche. \nLe ricordiamo che la Sua richiesta sarà evasa entro 7 gg lavorativi dalla chiusura della cartella clinica, vale a dire da quando sarà completa di tutti gli esami istologici. \nLe chiediamo di rispondere a questa mail inviandoci la ricevuta del pagamento effettuato ed una copia del documento di identità; dal medesimo indirizzo mail riceverà un link della copia conforme.\n \n Cordiali saluti\n La Casa di Cura Santa Famiglia\n Via dei Gracchi 134 - 136\n 00192 ROMA ");

    header ("Location: $pagina_grazie");

    } else {

    header ("Location: $pagina_error_condizioni");

    }

    } else {

    header ("Location: $pagina_error_email");

    }

    } else {


    header ("Location: $pagina_error_empty");

    }

    ?>

    Il form arriva regolarmente via email, ma senza l'allegato
    Dove sbaglio?
Devi accedere o registrarti per scrivere nel forum
1 risposte