Pagina 1 di 8 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 75

Discussione: form invio allegati

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    50

    form invio allegati

    vi prego aiutatemi, ormai sto impazzendo:berto: , non riesco ad uscirne.
    Sto cercando di allegare più di un file a questo form di invio e mail, ma non riesco a trovare la fine, con un allegato funziona, ma con 2 no!!!!!!

    Il form è questo:

    <form action="formmail.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="destinatario" value="davidebeccaro@gmail.com">
    <table border="0">
    <tr>
    <td>Tua Mail:</td>
    <td><input type="text" name="mittente" value="" /></td>
    </tr>
    <tr>
    <td>Oggetto:</td>
    <td><input type="text" name="oggetto" value="" /></td>
    </tr>
    <tr>
    <td>Messaggio:</td>
    <td><textarea cols="20" rows="4" name="messaggiob"></textarea>
    </textarea></td>
    </tr>
    <tr>
    <td>Messaggio:</td>
    <td><textarea cols="20" rows="4" name="messaggioc"></textarea>
    </textarea></td>
    </tr>
    <tr>
    <td>Messaggio:</td>
    <td><textarea cols="20" rows="4" name="messaggiod"></textarea>
    </textarea></td>
    </tr>
    <tr>
    <td>Allega file:</td>
    <td><input type="file" name="allegatoa" /></td>
    </tr>
    <tr>
    <td>Allega file:</td>
    <td><input type="file" name="allegatob" /></td>
    </tr>
    <tr>
    <tr>
    <td colspan="2">
    <table>
    <tr>
    <td><input type="submit" value="Invia" /></td>
    <td><input type="reset" value="cancella"></td>
    </tr>
    </table></tr>
    </table>
    </form>


    La pagina php invece è:

    <?php
    // Recupero il valore dei campi del form
    $destinatario = $_POST['destinatario'];
    $mittente = $_POST['mittente'];
    $oggetto = $_POST['oggetto'];
    $messaggioa = $_POST['messaggiob'];
    $messaggiob = $_POST['messaggioc'];
    $messaggioc = $_POST['messaggiod'];


    // Valorizzo le variabili relative all'allegato
    $allegatoa = $_FILES['allegatoa']['tmp_name'];
    $allegatoa_type = $_FILES['allegatoa']['type'];
    $allegatoa_name = $_FILES['allegatoa']['name'];
    $allegatob = $_FILES['allegatob']['tmp_name'];
    $allegatob_type = $_FILES['allegatob']['type'];
    $allegatob_name = $_FILES['allegatob']['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($allegatoa))
    {
    if (is_uploaded_file($allegatob))
    {
    // Apro e leggo il file allegato
    $filea = fopen($allegatoa,'rb');
    $dataa = fread($filea, filesize($allegatoa));
    fclose($filea);

    $fileb = fopen($allegatob,'rb');
    $datab = fread($fileb, filesize($allegatob));
    fclose($fileb);

    // Adatto il file al formato MIME base64 usando base64_encode
    $dataa = chunk_split(base64_encode($dataa));

    $datab = chunk_split(base64_encode($datab));

    // 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 .= "A_$messaggioa-----B_$messaggiob-----C_$messaggioc" . "\n\n";

    // Metto il separatore
    $msg .= "--{$mime_boundary}\n";

    // Aggiungo l'allegato al messaggio
    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename=\"{$allegatoa_name}\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $dataa . "\n\n";

    $msg .= "Content-Disposition: attachment;\n";
    $msg .= " filename=\"{$allegatob_name}\"\n";
    $msg .= "Content-Transfer-Encoding: base64\n\n";
    $msg .= $datab . "\n\n";

    // chiudo con il separatore
    $msg .= "--{$mime_boundary}--\n";
    }
    else
    {
    $msg = "A_$messaggioa-----B_$messaggiob-----C_$messaggioc" ;
    }

    // Invio la mail
    if (mail($destinatario, $oggetto, $msg, $headers))
    {
    echo "

    Mail inviata con successo!</p>";
    }else{
    echo "

    Errore!</p>";
    }
    }
    ?>

    Vi prego aiutatemi ne ho estremo bisogno.
    AIUTO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  2. #2
    aggiungi 1 allegato e poi fai il refresh della pagina, come tutte le webmail oO

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    50
    grazie adesso che mi hai illuminato, mi diresti come fare perchè non ne ho la piu pallida idea

  4. #4
    devi avere una cartella temporanea sul tuo sito o.0 li fai uploadare il file e metti un link nella pagina O.o

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    50
    non puoi spiegarmi passo per passo perche non so come si fa visto che sono le prime volte

  6. #6
    allora, devi trovare uno script che ti consenta l'upload se già non ne hai uno.
    secondo passo devi mettere nel tuo form una sezione solo allegati.
    devi creare una cartella nel tuo sito con chmod 0777 quindi fai puntare lì l'upload dello script dell'allegato. Nella pagina di "anteprima" mostrerai non solo il testo dell'utente ma anche gli eventuali file che ha allegato (ti consiglio un massimo di 8mb di allegati).

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    50
    grazie adesso io ho settato la cartella con tutti i permessi,
    e mi sono sacricato questo form:
    <form action="upload.php" method="post" enctype="multipart/form-data">

    <input name="image" type="file" size="40" />




    <input name="upload" type="submit" value="Carica immagine" />
    </form>

    che punta a :

    <?php
    do {
    if (is_uploaded_file($_FILES['image']['tmp_name'])) {
    // Controllo che il file non superi i 18 KB
    if ($_FILES['image']['size'] > 18432) {
    $msg = "

    Il file non deve superare i 18 KB!!</p>";
    break;
    }
    // Ottengo le informazioni sull'immagine
    list($width, $height, $type, $attr) = getimagesize($_FILES['image']['tmp_name']);
    // Controllo che le dimensioni (in pixel) non superino 160x180
    if (($width > 160) || ($height > 180)) {
    $msg = "

    Dimensioni non corrette!!</p>";
    break;
    }
    // Controllo che il file sia in uno dei formati GIF, JPG o PNG
    if (($type!=1) && ($type!=2) && ($type!=3)) {
    $msg = "

    Formato non corretto!!</p>";
    break;
    }
    // Verifico che sul sul server non esista già un file con lo stesso nome
    // In alternativa potrei dare io un nome che sia funzione della data e dell'ora
    if (file_exists('upload_img/'.$_FILES['image']['name'])) {
    $msg = "

    File già esistente sul server. Rinominarlo e riprovare.</p>";
    break;
    }
    // Sposto il file nella cartella da me desiderata
    if (!move_uploaded_file($_FILES['image']['tmp_name'], 'upload_img/'.$_FILES['image']['name'])) {
    $msg = "

    Errore nel caricamento dell'immagine!!</p>";
    break;
    }
    }
    } while (false);
    echo $msg;
    ?>


    Ora pero non so come far puntare il form alla mia cartella

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    50
    scusa ho fatto adesso riesco a puntare sulla cartella,il problema adesso è come faccio tornare nella pagina del form con tutti i miei dati?

  9. #9
    fai due form in una singola pagina
    nella prima la tua email

    nella seconda parte scrivi a video un campo vuoto, ed un bottone per scegliere il file (stile Sfoglia...) rimane solo da mettere il <input type="submit" value="Carica il File" />

    ovviamente il secondo form deve avere come Action la pagina php che hai creato oO

  10. #10
    Originariamente inviato da dvd2
    scusa ho fatto adesso riesco a puntare sulla cartella,il problema adesso è come faccio tornare nella pagina del form con tutti i miei dati?
    Devi fare un paio di cose:

    1) dobbiamo far si che il programma si ricordi che l'utente ha caricato qualcosa

    2) dobbiamo allegare questo qualcosa alla email.

    Useremo come "prova" le sessioni di php.

    Nella tua pagina php inserisci dopo che hai messo il file nella cartella il seguente codice:

    Codice PHP:
    $_SESSION['file'] = $_FILES['image']['name']; 
    dove hai il form invece devi startare php in questo modo (la pagina con i due form)

    Codice PHP:
    <?php
    if (isset($_SESSION['file']))
    {
      
    $a $_SESSION['file'];
      print (
    '

    [url="http://tuosito.quellochevuoi/cartella/'
    .$a.'"]'.$a.'[/url]</p>');
      print (
    '<form action="upload.php" method="post" enctype="multipart/form-data">
      
      <input name="image" type="file" size="40" />
      


      
      <input name="upload" type="submit" value="Carica immagine" />
      </form>'
    );
    }
    else
    {
      print (
    '<form action="upload.php" method="post" enctype="multipart/form-data">

    <input name="image" type="file" size="40" />




    <input name="upload" type="submit" value="Carica immagine" />
    </form>'
    );
    }
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.