• User Newbie

    Inviare file image con php

    :bho:
    Salve, ho creato un form per iscrizione in php e l'originale va ma appena aggiungo i miei dati non va più. C'è qualcuno che sa aiutarmi? Vi allego il tutto, quello evidenziato in rosso è quello che ho aggiunto.

    <form method="post" action="invio_emailwebmaster.php" enctype="multipart/form-data" onsubmit="return FrontPage_Form1_Validator(this)" language="JavaScript" name="FrontPage_Form1">
    
    
    <div class="style2">
    <table style="width: 74%">
    <tr>
    <td style="width: 149px">&nbsp;<input name="Image1" type="image" src="../../Modulo%20registrazione/Nick%20Name.gif" width="109" height="31" /></td>
    <td>&nbsp;<!--webbot bot="Validation" s-display-name="Attenzione inserire Nick Name Campo obbligatorio" b-value-required="TRUE" i-maximum-length="256" --><input name="NickName" type="text" size="30" maxlength="256" /></td>
    </tr>
    <tr>
    <td style="width: 149px">&nbsp;<input name="Image2" type="image" src="../../Modulo%20registrazione/Città.gif" width="67" height="35" /></td>
    <td>&nbsp;<input name="Citta" type="text" size="30" /></td>
    </tr>
    <tr>
    <td style="width: 149px">&nbsp;<input name="Image3" type="image" src="../../Modulo%20registrazione/Regione.gif" width="93" height="31" /></td>
    <td>&nbsp;<!--webbot bot="Validation" s-display-name="Attenzione inserire la Regione Campo obbligatorio" b-value-required="TRUE" b-disallow-first-item="TRUE" --><select name="Regione">
    <option>Seleziona</option>
    <option value="Piemonte">Piemonte</option>
    <option value="Lombardia">Lombardia</option>
    <option value="Valle d Aosta">Valle d Aosta</option>
    <option value="Liguria">Liguria</option>
    <option value="Trentino Alto Adige">Trentino Alto Adige
    </option>
    <option value="Friuli Venezia Giulia">Friuli Venezia 
    Giulia
    </option>
    <option value="Emilia Romagna">Emilia Romagna</option>
    <option value="Toscana">Toscana</option>
    <option value="Basilicata">Basilicata</option>
    <option value="Calabria">Calabria</option>
    <option value="Campania">Campania</option>
    <option value="Lazio">Lazio</option>
    <option value="Marche">Marche</option>
    <option value="Molise">Molise</option>
    <option value="Puglia">Puglia</option>
    <option value="Sardegna">Sardegna</option>
    <option value="Sicilia">Sicilia</option>
    <option value="Umbria">Umbria</option>
    <option value="Veneto">Veneto</option>
    <option value="Abruzzo">Abruzzo</option>
    <option value="Estero">Estero</option>
    </select></td>
    </tr>
    <tr>
    <td style="width: 149px">&nbsp;<input name="Image8" type="image" src="../../Modulo%20registrazione/Categoria.gif" width="106" height="31" /></td>
    <td>&nbsp;<!--webbot bot="Validation" s-display-name="Attenzione inserire la Categoria Campo obbligatorio" b-value-required="TRUE" b-disallow-first-item="TRUE" --><select name="Siamo_Sono">
    <option>Seleziona</option>
    <option value="Singola">Singola</option>
    <option value="Singolo">Singolo</option>
    </select></td>
    </tr>
    <tr>
    <td style="width: 149px">&nbsp;<input name="Image4" type="image" src="../../Modulo%20registrazione/E-%20Mail.gif" width="86" height="31" /></td>
    <td>&nbsp;<!--webbot bot="Validation" s-display-name="Attenzione inserire E-Mail Campo obbligatorio" b-value-required="TRUE" i-maximum-length="256" --><input name="email" type="text" size="30" maxlength="256" /></td>
    </tr>
    <tr>
    <td style="width: 149px">&nbsp;<input name="Image5" type="image" src="../../Modulo%20registrazione/Password.gif" width="108" height="31" /></td>
    <td>&nbsp;<input name="Password" type="password" size="15" /></td>
    </tr>
    <tr>
    <td style="width: 149px">&nbsp;<input name="Image6" type="image" src="../../Modulo%20registrazione/conferma%20password.gif" width="144" height="31" /></td>
    <td>&nbsp;<input name="Conferma_Password" type="password" size="15" /></td>
    </tr>
    <tr>
    <td style="width: 149px">&nbsp;<input name="Image7" type="image" src="../../Modulo%20registrazione/Siti%20Personale.gif" width="138" height="31" /></td>
    <td>&nbsp;<input name="Sito_Personale" type="text" size="50" /></td>
    </tr>
    </table>
    <br />
    <br />
    <table style="width: 100%">
    <tr>
    <td class="style1">&nbsp;<input name="Image9" type="image" src="../../Modulo%20registrazione/testo%20annuncio.gif" width="219" height="49" /></td>
    </tr>
    <tr>
    <td>&nbsp;<!--webbot bot="Validation" s-display-name="Attenzione inserire il testo Annuncio Campo obbligatorio" b-value-required="TRUE" --><textarea name="Testo_Annucio" cols="100" rows="10"></textarea></td>
    </tr>
    </table>
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp ;
    <br />
    <br />
    <input name="allegato" type="file" /><br />
    <br />
    <br />
    <table style="width: 127%">
    <tr>
    <td colspan="2">&nbsp;<input name="Image10" type="image" src="../../../image/il%20tuo%20profilo.gif" width="333" height="57" /><font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif"><span class="style30"><span class="style20"><em><br />
    <strong>Queste informazioni saranno visibili nel profilo 
    </strong></em></span></span></font></td>
    </tr>
    <tr>
    <td style="width: 195px">&nbsp;</td>
    <td style="width: 618px">&nbsp;</td>
    </tr>
    <tr>
    <td class="style31" style="width: 195px">
    <font color="#333333" face="Verdana, Arial, Helvetica, sans-serif">
    <span class="style49">
    <em>Hobby fotografia/video :</em></span></font>&nbsp;</td>
    <td style="width: 618px"><select name="Hobby">
    <option>Seleziona</option>
    <option value="Foto">Foto</option>
    <option value="Video">Video</option>
    <option value="Foto e Video">Foto e Video</option>
    <option value="Altro">Altro</option>
    <option value="Nulla">Nulla</option>
    </select>&nbsp;</td>
    </tr>
    <tr>
    <td class="style31" style="width: 195px">
    <font color="#333333" face="Verdana, Arial, Helvetica, sans-serif">
    <span class="style49">
    <em>Mail per Contatto MSN :</em></span></font>&nbsp;</td>
    <td style="width: 618px">
    <input name="Mail_MSN" type="text" size="30" />&nbsp;</td>
    </tr>
    <tr>
    <td class="style31" style="width: 195px">
    <font color="#333333" face="Verdana, Arial, Helvetica, sans-serif">
    <span class="style49">
    <strong>
    <em>Skype :</em></strong></span></font>&nbsp;</td>
    <td style="width: 618px">
    <input name="Skype" type="text" size="30" />&nbsp;</td>
    </tr>
    <tr>
    <td class="style31" style="width: 195px">
    <font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <b><strong>
    <em><span class="style48">Cellulare </span> </em> 
    <span class="style30">
    <span class="style47">
    <em>: (Facoltativo)</em></span></span></strong></b></font>&nbsp;</td>
    <td style="width: 618px">
    <input name="Telefono" type="text" size="30" />&nbsp;</td>
    </tr>
    </table>
    <br />
    <table style="width: 127%">
    <tr>
    <td class="style1">
    <input name="Image11" type="image" src="../../Modulo%20registrazione/dichiara.gif" width="384" height="49" />&nbsp;</td>
    </tr>
    <tr>
    <td class="style1">
    <textarea name="Regolamento" cols="50" rows="5">Con la richiesta di registrazione dichiaro:
    Tutela della privacy.
    </textarea>&nbsp;</td>
    </tr>
    </table>
    <br />
    <table style="width: 128%">
    <tr>
    <td class="style1">
    <font color="#333333" size="2" face="Verdana, Arial, Helvetica, sans-serif">
    <b><strong><em>Da spuntare per Accettazione di una Nuova registrazione</em></strong></b></font>&nbsp;</td>
    </tr>
    <tr>
    <td class="style1">
    <input name="Conferma_Dichiarazione_Regolamento" type="checkbox" value="Ok Accetto il Regolamento" style="height: 21px; width: 22px" /></td>
    </tr>
    </table>
    <br />
    <table style="width: 128%">
    <tr>
    <td class="style1">
    <input type="submit" value="Invia Modulo" />&nbsp;</td>
    <td class="style1">
    <input type="reset" value="Cancella" />&nbsp;</td>
    </tr>
    </table>
    <br />
    </div>
    </form>
    

    E questa è la pagina php invio_emailwebmaster.php modificata da me, l'originale e senza i punti in rosso.

    <?php
    // Recupero il valore dei campi del form
    $destinatario = $_POST['[email protected]'];
    $mittente = $_POST['[email protected]'];
    $oggetto = $_POST['Nuovo Annuncio'];
    $messaggio = $_POST['NickName'];
    $messaggio .= $_POST['Citta'];
    $messaggio .= $_POST['Regione'];
    $messaggio .= $_POST['Siamo_Sono'];
    $messaggio .= $_POST['Password'];
    $messaggio .= $_POST['Conferma_Password'];
    $messaggio .= $_POST['Sito_Personale'];
    $messaggio .= $_POST['Testo_Annucio'];
    $messaggio .= $_POST['Hobby'];
    $messaggio .= $_POST['Mail_MSN'];
    $messaggio .= $_POST['Skype'];
    $messaggio .= $_POST['Telefono'];
    $messaggio .= $_POST['Conferma_Dichiarazione_Regolamento'];
    $messaggio .= $_POST['Regolamento'];
    // Valorizzo le variabili relative all'allegato
    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];
    
    // Creo 2 variabili che riempirò più avanti...
    $headers = "From: " . $mittente;
    $msg = "";
    
    // Verifico se il file è stato caricato correttamente via HTTP
    // In caso affermativo proseguo nel lavoro...
    if (is_uploaded_file($allegato))
    {
    // Apro e leggo il file allegato
    $file = fopen($allegato,'rb');
    $data = fread($file, filesize($allegato));
    fclose($file);
    
    // Adatto il file al formato MIME base64 usando base64_encode
    $data = chunk_split(base64_encode($data));
    
    // Genero il "separatore"
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
    
    // Aggiungo le intestazioni necessarie per l'allegato
    $headers .= "\nMIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/mixed;\n";
    $headers .= " boundary=\"{$mime_boundary}\"";
    
    // Definisco il tipo di messaggio (MIME/multi-part)
    $msg .= "This is a multi-part message in MIME format.\n\n";
    
    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";
    
    // Questa è la parte "testuale" del messaggio
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
    $msg .= $messaggio . "\n\n";
    
    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";
    
    // Aggiungo l'allegato al messaggio
    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename=\"{$allegato_name}\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $data . "\n\n";
    
    // chiudo con il separatore
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
    $msg = $messaggio;
    }
    
    // Invio la mail
    if (mail($destinatario, $oggetto, $msg, $headers))
    {
    echo "<p>Mail inviata con successo!</p>";
    }else{
    echo "<p>Errore!</p>";
    }
    ?>
    

    :arrabbiato:


  • User Attivo

    Perchè invece di costruire a mano il contenuto dell'email non utilizzi una delle tante classi già pronte (es. phpmailer)?