• User Newbie

    Form Html e Validator in PHP (invio allegati).

    Salve a tutti.
    Dovrei inserire nel form che vi presento sotto, una funzione che premetta di inviare un allegato via mail.

    Form html
    [HTML]

    <form class="form-horizontal" enctype="multipart/form-data" action="./validation/preventivo.php" method="POST"><fieldset>
    <!-- Form Name -->

    <legend>Informazioni auto <h6>Completa con i dati della tua auto</h6></legend>
    <!-- Text input--><div class="form-group"> <label class="col-md-3 control-label" for="textinput">Marca</label> <div class="col-md-3"> <input id="textinput" name="marca" type="text" placeholder="Marca" class="form-control input-md"> </div>

    <!-- Multiple Radios (inline) -->
    <label class="col-md-3 control-label" for="textimput">Modello</label> <div class="col-md-3"> <input id="textinput" name="modello" type="text" placeholder="Modello" class="form-control input-md"> </div> </div>

    <div class="form-group"> <label class="col-md-3 control-label" for="textinput">Immatricolazione</label> <div class="col-md-3"> <input id="textinput" name="immatricolazione" type="text" placeholder="Immatricolazione" class="form-control input-md"> </div> <label class="col-md-3 control-label" for="textinput">Carburante</label> <div class="col-md-3"> <input id="textinput" name="carburante" type="text" placeholder="Carburante" class="form-control input-md"> </div> </div> <div class="form-group"> <label class="col-md-3 control-label" for="textinput">Cilindrata</label> <div class="col-md-3"> <input id="textinput" name="cilindrata" type="text" placeholder="Cilindrata" class="form-control input-md"> </div> <label class="col-md-3 control-label" for="textinput">Nr. di Targa</label> <div class="col-md-3"> <input id="textinput" name="nditarga" type="text" placeholder="Nr. di Targa" class="form-control input-md"> </div> </div> <legend>Informazioni Sinistro <h6>Aggiungi maggiori informazioni riguardanti il Sinistro</h6></legend> <div class="form-group"> <label class="col-md-3 control-label" for="textarea">Altre info sul Sinistro</label> <div class="col-md-9"> <textarea class="form-control" id="textarea" name="infosinistro">Maggiori Info</textarea> <label class="col-md-8 control-label" for="textinput">Carica le foto del sinistro</label> <input name="attachment" type="file"> </div></div>

    <legend>Dati Personali <h6>Inserisci i tuoi dati personali o intestatario del veicolo</h6> </legend> <div class="form-group"> <label class="col-md-3 control-label" for="textinput">Nome</label> <div class="col-md-3"> <input id="textinput" name="nome" type="text" placeholder="Nome" class="form-control input-md"> </div> <label class="col-md-3 control-label" for="textinput">Cognome</label> <div class="col-md-3"> <input id="textinput" name="cognome" type="text" placeholder="Cognome" class="form-control input-md"> </div> </div>

    <div class="form-group"> <label class="col-md-3 control-label" for="textinput">Telefono</label> <div class="col-md-3"> <input id="textinput" name="telefono" type="text" placeholder="N. di Telefono" class="form-control input-md"> </div> <label class="col-md-3 control-label" for="textinput">E-mail</label> <div class="col-md-3"> <input id="textinput" name="email" type="text" placeholder="Indirizzo e-mail" class="form-control input-md"> </div> </div>

    <div class="form-group"> <label class="col-md-3 control-label" for="textarea"></label> <div class="col-md-9"> <div class="g-recaptcha" data-sitekey=""></div> </div></div>

    <div class="form-group"> <label class="col-md-3 control-label" for="button1id"></label> <div class="col-md-8"> <button id="button1id" type="submit" name="submit" class="btn btn-success">INVIA</button> </div></div>
    </fieldset></form>
    [/HTML]

    Validator Php
    [PHP]

    <?php
    //Raccolta informazioni da form
    session_start();
    $marca = $_POST['marca'];$modello = $_POST['modello'];$immatricolazione = $_POST['immatricolazione'];$carburante = $_POST['carburante'];$cilindrata = $_POST['cilindrata'];$nditarga = $_POST['nditarga'];
    $infosinistro = $_POST['infosinistro'];
    $nome = $_POST['nome'];$cognome = $_POST['cognome'];$telefono = $_POST['telefono'];$email = $_POST['email'];

    //Fine raccolta informazioni
    //recaptchaif($_SERVER["REQUEST_METHOD"] === "POST") { //form submitted
    //check if other form details are correct
    //verify captcha $recaptcha_secret = ""; $response = file_get_contents("".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']); $response = json_decode($response, true); if($response["success"] === true) { echo "Inviato!"; } else { echo "Sbagliato!"; } } //fine recaptcha
    //Invio mail al Webmaster
    $to = "[email protected]";$sbj = "Nuova richiesta preventivo";$msg = "<html><head><style type='text/css'>p.stile {font-weight:bold;font-family:arial, sans-serif;}
    p {font-family:arial, sans-serif;}</style></head>
    <body><p>Hai ricevuto i seguenti dati da $nome $cognome</p><p class='stile'>Marca: </p><p>$marca</p><p class='stile'>Modello: </p><p>$modello</p><p class='stile'>Immatricolazione: </p><p>$immatricolazione</p><p class='stile'>Carburante: </p><p>$carburante</p><p class='stile'>Cilindrata: </p><p>$cilindrata</p><p class='stile'>N. di Targa: </p><p>$nditarga</p>
    <p class='stile'>Maggiori info del Sinistro: </p><p>$infosinistro</p>
    <p class='stile'>Dati del cliente:</p><p>$nome $cognome</p><p class='stile'>N. di Telefono: </p><p>$telefono</p><p class='stile'>Indiritto e-mail: </p> <p>$email</p>

    </body></html>";
    $from = $email;$headers = 'MIME-Version: 1.0' . "\n";$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";$headers .= "From: $from";
    mail($to, $sbj, $msg, $headers);
    //Fine invio messaggio al Webmaster
    //Inizio invio email all'utente
    $toclient = $email;$sbjclient = "Richiesta inviata";$msgclient = "La vostra richiesta è stata inviata, risponderemo a breve.";
    $fromclient = "";$headersclient = 'MIME-Version: 1.0' . "\n";$headersclient .= 'Content-type: text/html; charset=iso-8859-1' . "\n";$headersclient .= "From: $fromclient";
    mail($toclient, $sbjclient, $msgclient, $headersclient);

    session_destroy();
    exit;

    ?>[/PHP]

    Dovrei inserire la funzione che mi invia semplicemente l'allegato via mail...

    Avete soluzioni?

    Grazie


  • User Attivo

    Ciao
    prova a vedere se questo tutorial può fare al caso tuo.
    http://www.danieletabacco.com/inviare-email-con-allegati-usando-php/

    Se posso darti un consiglio, per le prossime volte, potresti indentare il codice in modo tale che chi lo legga possa fare meno fatica.
    Grazie


  • User Newbie

    Grazie per la risposta, ma ancora non ci sono riuscito.

    Intanto, perchè anche se il recaptcha è sbagliato e/o i campi non sono stati compilati correttamente, la mail la manda lo stesso?

    PS purtroppo una volta incollato, si incasina tutto ...
    [PHP]
    <?php
    //Raccolta informazioni da form
    session_start();
    $marca = $_POST['marca'];$modello = $_POST['modello'];$immatricolazione = $_POST['immatricolazione'];$carburante = $_POST['carburante'];$cilindrata = $_POST['cilindrata'];$nditarga = $_POST['nditarga'];
    $infosinistro = $_POST['infosinistro'];
    $nome = $_POST['nome'];$cognome = $_POST['cognome'];$telefono = $_POST['telefono'];$email = $_POST['email'];
    $datipers = $_POST['datipers'];$newsletter = $_POST['newsletter'];

    //Fine raccolta informazioni
    //recaptchaif($_SERVER["REQUEST_METHOD"] === "POST") { //form submitted
    //check if other form details are correct
    //verify captcha $recaptcha_secret = "chiaveeliminata"; $response = file_get_contents("/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']); $response = json_decode($response, true); if($response["success"] === true) { echo "Inviato"; } else { echo "Sbagliato"; } } //fine recaptcha
    //Invio mail al Webmaster
    $to = "email";$sbj = "Nuova richiesta preventivo";$msg = "<html><head><style type='text/css'>p.stile {font-weight:bold;font-family:arial, sans-serif;}
    p {font-family:arial, sans-serif;}</style></head>
    <body><p>Hai ricevuto i seguenti dati da $nome $cognome</p><p class='stile'>Marca: </p><p>$marca</p><p class='stile'>Modello: </p><p>$modello</p><p class='stile'>Immatricolazione: </p><p>$immatricolazione</p><p class='stile'>Carburante: </p><p>$carburante</p><p class='stile'>Cilindrata: </p><p>$cilindrata</p><p class='stile'>N. di Targa: </p><p>$nditarga</p>
    <p class='stile'>Maggiori info del Sinistro: </p><p>$infosinistro</p>
    <p class='stile'>Dati del cliente:</p><p>$nome $cognome</p><p class='stile'>N. di Telefono: </p><p>$telefono</p><p class='stile'>Indirizzo e-mail: </p> <p>$email</p>
    <p>$datipers</p><p>$newsletter</p>

    </body></html>";
    $from = $email;$headers = 'MIME-Version: 1.0' . "\n";$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";$headers .= "From: $from";
    mail($to, $sbj, $msg, $headers);
    //Fine invio messaggio al Webmaster
    //Inizio invio email all'utente
    $toclient = $email;$sbjclient = "Richiesta inviata";$msgclient = "La vostra richiesta è stata inviata, risponderemo a breve.";
    $fromclient = "Client etc";$headersclient = 'MIME-Version: 1.0' . "\n";$headersclient .= 'Content-type: text/html; charset=iso-8859-1' . "\n";$headersclient .= "From: $fromclient";
    mail($toclient, $sbjclient, $msgclient, $headersclient);

    session_destroy();
    exit;

    ?>[/PHP]

    Dove c'è il recaptcha ho eliminato l'https con google .com perchè il forum altrimenti non faceva inviare.. 🙂

    quindi anche se dopo cliccato su invia, l'echo mi dice sbagliato, mi manda lo stesso la mail ovviamente senza campi compilati !?!?!?

    Peraltro, in ogni campo del form ho inserito il required cioè:

    Esempio:
    [HTML]
    <textarea class="form-control" id="textarea" name="infosinistro" required></textarea>
    [/HTML]

    Grazie per l'aiuto....sto uscendo pazzo 🙂


  • User Attivo

    In quel caso la mail viene mandata lo stesso, dovresti inserire dei controlli lato client(Javascript)che blocchino l'esecuzione del codice php se i campi non sono compilati.


  • User Newbie

    @PietroR said:

    In quel caso la mail viene mandata lo stesso, dovresti inserire dei controlli lato client(Javascript)che blocchino l'esecuzione del codice php se i campi non sono compilati.

    Grazie, hai degli esempi?


  • User Attivo

  • User Newbie

    Salve a tutti, sto diventando pazzo.....
    Ho questo form:
    pastebin.com/JU9KeZEV
    Stavo cercando un modo per inserire gli allegati ed ho trovato:
    pastebin.com/X3c9thGU con il relativo form: pastebin.com/9u5HYacQ
    Le email arrivavano con il relativo allegato.
    Ora provando a modificare lo script php per l'invio configurandolo per il mio form (vedi primo link), l'email arriva con degli errori: vi faccio vedere.
    pastebin.com/u9y7nLRw (script php modificato)
    Errore mail: pastebin.com/hpYuC0BL
    Avete idee? In pratica avevo già un form pronto, ma la fatica è inserire questo cavolo di allegato.....Grazie a tutti 🙂


  • User Attivo

    Ma senza la modifica arrivano sia la mail che l'allegato?


  • User Newbie

    @PietroR said:

    Ma senza la modifica arrivano sia la mail che l'allegato?

    Ciao, ci sono riuscito...l'unico problema è inviare allegati multipli...appena riesco magari vi pubblico il tutto..;)


  • User Attivo

    perfetto!


  • User Newbie

    @PietroR said:

    perfetto!
    Salve, sono ancora qui.....l'allegato (singolo)..lo manda....ma ad esempio dal cellulare tramite l'app di libero l'allegato appare.....se ad esempio vado dal sito.....non mi 'traduce' l'allegato....e mi da quegli errori.....avete idee? Possibile sia tanto complicato? 😞


  • User Newbie

    Up! 😕


  • User Attivo

    cosa intendi per non ti 'traduce' l'allegato?