• User

    Form di invio con allegato [Contact form] in PHP

    Salve a tutti,
    vorrei realizzare un form di contatti/lavora con noi,
    con la possibilità di allegare una foto ed un file di curriculum.

    Il mio HTML è il seguente (ho lasciato solo alcuni campi per esempio..):

    
    <form action="" method="post" enctype="multipart/form-data" id="lavora_con_noi">
                  <p>Dati personali:</p>
                  <table border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td><label for="nome">Nome:*</label>
                        <input type="text" name="nome" id="nome" /></td>
                      <td><label for="cognome">Cognome:*</label>
                        <input type="text" name="cognome" id="cognome" /></td>
                    </tr>
                    <tr>
                      <td><label for="sesso">Sesso:*</label>
                        <select name="sesso" id="sesso">
                          <option>Seleziona...</option>
                          <option value="Uomo">Uomo</option>
                          <option value="Donna">Donna</option>
                      </select></td>
                    </tr>
                    <tr>
                      <td><label for="telefono">Telefono:*</label>
                      <input type="text" name="telefono" id="telefono" /></td>
                    </tr>
                    <tr>
                      <td><label for="email">Email:*</label>
                      <input type="text" name="email2" id="email" /></td>
                      <td>&nbsp;</td>
                    </tr>
                    <tr>
                      <td colspan="2"><p>Allegati</p></td>
                    </tr>
                    <tr>
                      <td colspan="2"><label for="fototessera">Fototessera:</label>
                        <input type="file" name="fototessera" id="fototessera" />
                      <p><span>Puoi inviare una tua foto non superiore a 100 KB, in uno dei formati &quot;.jpg&quot;, &quot;.gif&quot;, &quot;.png&quot;, &quot;.bmp&quot;</span></p></td>
                    </tr>
                    <tr>
                      <td colspan="2"><label for="curriculum">Curriculum Vitae:</label>
                          <input type="file" name="curriculum" id="curriculum" />
                        <p><span>Puoi inviare una tuo curriculum non superiore a 300 KB, in uno dei formati &quot;.pdf&quot;, &quot;.txt&quot;, &quot;.doc&quot;</span></p></td>
                    </tr>
                    <tr>
                      <td colspan="2"><input type="submit" name="invia" id="invia" value="Invia richiesta" /></td>
                    </tr>
                  </table>
                </form>
    
    
    

    Ora dovrei fare il send.php,
    se ci fosse anche il validate sarebbe perfetto, ma senza va benissimo, quello lo so fare..

    grazie a tutti.


  • User Attivo

    Ciao Anu,
    questo è un semplicissimo script (non puoi usarlo così, va integrato) per fare quello che ti serve:
    [PHP]

             if(isset($_FILES['fototessera']))
             {
                 $file = $_FILES['fototessera'];
                 if($file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name']))
                 {
                     //Il tuo file è stato caricato correttamente e si trova in $file['tmp_name']
                 }
             }
    

    [/PHP]
    Il tuo file è nella cartella temporanea di php, se vuoi salvarlo in modo permanente, devi utilizzare la funzione move_uploaded_file($file['tmp_name'], '/cartella_upload/'.$file['name']).
    Se vuoi inviarlo nella mail che ricevi dal form, puoi semplicemente utilizzare $file['tmp_name'] come riferimento al file che è stato caricato.
    Attenzione a validare il mime type: il mime del file caricato si trova in $file['type'].
    Per la dimensione, fai riferimento a $file.

    Spero ti sia d'aiuto,
    Luca.


  • User

    Benissimo grazie, credo di aver capito!
    Dopo provo a creare il file send.php 🙂


  • User

    Sono arrivato a qui con il PHP, funzionano tutti li input, ora dovrei implementare le select e gli upload..

    
    <?php
    
    
    $nome = $_POST['nome']; // contain name of person
    $cognome = $_POST['cognome']; // contain surname of person
    $stato_civile = $_POST['stato_civile']; 
    $luogo_di_nascita = $_POST['luogo_di_nascita']; 
    $data_di_nascita = $_POST['data_di_nascita']; 
    $via = $_POST['via']; 
    $civico = $_POST['civico']; 
    $cap = $_POST['cap']; 
    $comune_residenza = $_POST['comune_residenza']; 
    $nazione = $_POST['nazione']; 
    $provincia = $_POST['provincia']; 
    $email = $_POST['email']; // Email address of sender 
    $telefono = $_POST['telefono'];
    $cellulare = $_POST['cellulare']; 
    
    
    $body = $_POST['text']; // Your message 
    $receiver = "[email protected]" ; // hardcorde your email address here - This is the email address that all your feedbacks will be sent to 
    if (!empty($nome) & !empty($email) && !empty($body)) {
        $body = "Nome: {$nome}\n\nCognome: {$cognome}\n\nStato civile: {$stato_civile}\n\nLuogo di nascita: {$luogo_di_nascita}\n\nData di nascita: {$data_di_nascita}\n\nVia: {$civico} {$via} {$cap} {$comune_residenza} {$provincia} {$nazione}\n\nTelefono: {$telefono}\n\nCelulare: {$cellulare}\n\n{$body}";
        $send = mail($receiver, 'Richiesta di valutazione del curriculum arrivato da', $body, "From: {$email}");
        if ($send) {
            echo 'true'; //if everything is ok,always return true , else ajax submission won't work
        }
    
    
    }
    
    
    ?>
    
    

  • User Attivo

    Prima di fare il send, verifica la validità di tutti i dati in input, poi inserisci il codice che ti ho girato (va un po' modificato per fare in modo che lanci un return false se qualcosa va male), e poi ti occupi di verificare il file (dimensione, estensione, ecc).
    Ricorda anche che l'invio di una mail con allegato, non è scritta in text plain, ma è un messaggio multipart, perciò deve essere fatto in maniera un po' differente (se cerchi in giro ci sono moltissime guide).
    Se vuoi semplificarti di molto la vita, ti consiglio la classe PHPMailer, che fa tutto questo in maniera molto più semplice.

    Luca