• User Newbie

    Poter inviare piu allegati(non solo uno com'è ora) e controllo del form stesso

    Salve a tutti,
    Sono riuscito a trovare in internet un form contatti, con la possibilità di inviarmi un allegato via mail, per il mio sito.
    Ora, avrei bisogno che questo form, non avesse solo un campo per gli allegati, ma, al click dell'utente su(per esempio) un piu, l'utente stesso possa inserire un allegato in più, fino ad un massimo di cinque allegati. E' possibile fare ciò?? Potreste aiutarmi con qualche codice
    Inoltre, vorrei(per evitare spam selvaggio) che se l'utente, nel momento in cui non riempe tutti i campi obbligatori(email,oggetto,messaggio ed almeno un allegato) venisse fuori un errore. Ero riuscito a far venir fuori il messaggio d'errore, ma a me la mail veniva spedita lo stesso 😞

    Vi copio qui i file delle due pagine:
    pagina uno chiamata "form.htm"
    [php]<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>WEBSPA.it - Richiesta di inserimento foto</title>
    </head>
    <body>
    <form action="form1.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="destinatario" value="[email protected]">
    <div align="center">
    <table border="0" width="567">
    <tr>
    <td width="561" colspan="2">
    <p align="center"><b>
    <font face="Tahoma" color="#00B00D" size="5">
    RICHIESTA INSERIMENTO FOTO</font></b></p>
    <p align="center"><b>
    <font face="Tahoma" color="#FFFFFF" style="font-size: 1pt">
    -</font></b></p>
    </td>
    </tr>
    <tr>
    <td width="561" colspan="2">
    <hr color="#00B00D" width="90%"></td>
    </tr>
    <tr>
    <td width="561" colspan="2">
    <p align="center">
    <b>
    <font face="Tahoma" size="1" color="#00B00D">
    Pagina per la richiesta
    dell'inserimento della tua vespa
    nell'archivio</font></b></td>
    </tr>
    <tr>
    <td width="561" colspan="2">
    <hr color="#00B00D" width="90%"></td>
    </tr>
    <tr>
    <td>
    <p align="right"><b>
    <font face="Tahoma" style="font-size: 11pt" color="#00B00D">La tua Mail:</font></b></td>
    <td><input type="text" name="mittente" value="" /></td>
    </tr>
    <tr>
    <td>
    <p align="right"><b>
    <font color="#00B00D" face="Tahoma" style="font-size: 11pt">Oggetto</font></b></td>
    <td><input type="text" name="oggetto" value="" /></td>
    </tr>
    <tr>
    <td align="center" colspan="2"><b>
    <font color="#00B00D" face="Tahoma" style="font-size: 11pt">Messaggio:</font></b><p>
    <textarea cols="44" rows="8" name="messaggio"></textarea></td>
    </tr>
    <tr>
    <td> </td>
    <td> </td>
    </tr>
    <tr>
    <td>
    <p align="right"><b>
    <font color="#00B00D" face="Tahoma" style="font-size: 11pt">Allega la foto
    dell'articolo:</font></b></td>
    <td><input type="file" name="allegato" /></td>
    </tr>
    <tr>
    <td colspan="2"> </td>
    </tr>
    <tr>
    <td colspan="2">
    <p align="center"><input type="submit" value="Invia la Foto" /></td>
    </tr>
    <tr>
    <td colspan="2"> </td>
    </tr>
    <tr>
    <td width="561" colspan="2">
    <hr color="#00B00D" width="90%"></td>
    </tr>
    <tr>
    <td width="561" colspan="2">
    <p align="center">
    <font face="Tahoma" size="2">| 2010
    © Webspa.it | All Rights Reserved 
    |</font></td>
    </tr>
    </table>
    </div>
    </form><script language=JavaScript>
    <!--
    var message="";
    ///////////////////////////////////
    function clickIE() {if (document.all) {(message);return false;}}
    function clickNS(e) {if
    (document.layers||(document.getElementById&&!document.all)) {
    if (e.which==2||e.which==3) {(message);return false;}}}
    if (document.layers)
    {document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;}
    else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;}
    document.oncontextmenu=new Function("return false")
    // -->
    </script>
    </body>
    </html>[/php]

    pagina due chiamata "form1.php"
    [php]<?php
    // Recupero il valore dei campi del form
    $destinatario = $_POST['destinatario'];
    $mittente = $_POST['mittente'];
    $oggetto = $_POST['oggetto'];
    $messaggio = $_POST['messaggio'];
    // 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"
    // Serve per dividere, appunto, le varie parti del messaggio.
    // Nel nostro caso separerà la parte testuale dall'allegato
    $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>"; <--- non funziona, anche se lascio i campi vuoti viene fuori una pagina con sritto "Mail inviata con successo"
    }
    ?>[/php]

    Ringraziando anticipatamente chi mi aiuterà...
    Federico😮