Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema form con allegato

    Ciao a tutti ho un problema che mi stà facendo impazzire:

    Ho costruito un form per inviare dati e un allegato. il codice per il file allegato è il seguente:

    $allegato = $_FILES['allegato']['tmp_name'];
    $allegato_type = $_FILES['allegato']['type'];
    $allegato_name = $_FILES['allegato']['name'];

    $headers = "From: " . $nome_mittente. " " . $_POST['nome'];
    $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 .= $corpo . "\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 = $corpo;
    }

    //inizio l'invio dell'email

    mail("$destinatario","$oggetto_email","$msg","$hea ders");

    header ("Location: $pagina_grazie");

    } else {

    header ("Location: $pagina_error_condizioni");

    }

    } else {

    header ("Location: $pagina_error_email");

    }

    } else {


    header ("Location: $pagina_error_empty");

    }


    ?>

    La mail viene inviata e anche l'allegato ma quando clicco sull'allegato thunderbird non me lo apre e non me lo salva.
    La dimensione max di upload è di 4Mb e per ora ho provato con file molto piccoli.
    Potrebbe essere un problema di permessi? Boh non sò cosa fare.......
    ::Nano::
    http://www.nanoscript.net

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Senza controllare il codice ti dico subito cosa puoi controllare intanto:

    1) controlla che il problema ci sia anche con altri client di posta (outlook ad esempio...) o altri web-mail.

    2) l'allegato viene preso da una cartella temporanea (generalmente "tmp"). Verifica che sia presente sul server o che sia correttamente settata dall'host (phpinfo()).


  3. #3
    Non funziona neanche su hotmail e gmail.
    Ora controllo il phpinfo ma non sò cosa farci...
    ::Nano::
    http://www.nanoscript.net

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    non devi farci niente...controlla che la cartella TEMP sia settata correttamente...e che esista

  5. #5
    Nella root del server c'è una cartella tmp se è quella esiste
    ::Nano::
    http://www.nanoscript.net

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.