+ Rispondi alla Discussione
Risultati da 1 a 3 di 3

Upload di foto in pagina web

Ultimo Messaggio di osafado il:
  1. #1
    User Newbie
    Data Registrazione
    Dec 2009
    Messaggi
    5

    Upload di foto in pagina web

    Salve, sto' disegnando un sito internet ed ho questo problema: Ho un form dove l'utente si iscrive, inserisce i suoi dati e le sue foto in un form e alla fine le invia. Tutto bene fino a quando inserisce i dati, il problema sorge quando deve inserire le foto; non so come fare uno script che permetta di fare l' upload delle foto e di mandarle alla mia mail insieme ai dati. Premetto che non sono esperto in PHP, mi limito a modificare i vari script che trovo in giro ...Sarei grato se qualcuno mi possa spiegare (o mandare uno script ) per inserire al mio form le foto. Grazie in anticipo.

  2. #2
    User L'avatar di linus
    Data Registrazione
    Apr 2005
    Località
    Bergamo
    Messaggi
    125
    Il form di invio deve contenere
    Codice HTML:
    <form method="post" action="send.php" enctype="multipart/form-data">
    
    <!-- Vari campi  -->
    
    Immagine  <input class="camp" name="file_send" type="file" />
    
    <input type="submit" value="  Invio  " />
    </form>
    Mentre la pagina send.php
    Codice PHP:
    $Reply upload($dir "directory_file_ricevuti/"$tipo FALSE$dim FALSE$debug FALSE);
    $code_reply "\r\n<p>$Reply</p>";
    echo 
    $code_reply
    La funzione upload richiamata è questa:
    Codice PHP:
    /**
      * Funzione per effettuare l'upload
      */
    function upload($dir "directory_file_ricevuti/"$tipo FALSE$dim FALSE$debug FALSE)
    {
       
    //Impostare la path assoluta del proprio sito
       
    $source_dir "/var/www/site/home/......etc";
       if(!
    is_uploaded_file($_FILES['file_send']['tmp_name']))
       {
           
    $echo "Nessun file selezionato da inviare al server";
           
    #exit();
       
    }

       if(
    is_uploaded_file($_FILES['file_send']['tmp_name'])){

         
    //Funzione di debug
         
    if($debug != FALSE){
            
    print_r($_FILES);
         }

         
    //Controllo che il file non esista nella destinazione
         
    if (is_file($source_dir.$dir.$_FILES['file_send']['name'])){
           
    $echo "Esiste gi&agrave; un file con lo stesso nome!<br />
                    Rinominarlo e tentare nuovamente!"
    ;
           
    #exit();
         
    }

         
    //Controllo il tipo di file se ne ho definito uno o più obbligatori
         
    if($tipo != FALSE) {
           if(
    is_array($tipo)) {
             if(!
    in_array($_FILES['file_send']['type'],$tipo)) {
                
    $echo "Tipo file non consentito";
                
    #exit();
             
    }
           } else {
             if(
    $_FILES['file_send']['type'] != $tipo) {
                
    $echo "Tipo file non consentito";
                
    #exit();
             
    }
           }
         }
      
        
    //Controllo che le dimensioni non superino il massimo consentito
        
    if($dim != FALSE) {
          
    $dimz $dim 1024000;   
          if(
    $_FILES['file_send']['size'] > $dimz) {
            
    $echo "Il file che si sta cercando di inviare &egrave; troppo grande!<br />
                  la dimensione massime consentita &egrave; di " 
    $dim " megabyte";
            
    #exit();      
          
    }
        }
      
        
    //Controllo che la directory di destinazione sia server writable
        
    if(!is_writable($source_dir.$dir)) {
           
    $echo "Non si dispone dei permessi necessari!<br />
                    Contattare l'amministratore del sistema e far settare i permessi della directory <i>" 
    $dir "</i> a 0777";
           
    #exit();      
        
    }
      
        
    //Passati tutti i controlli posso inviare il file al server!
        
    if(move_uploaded_file($_FILES['file_send']['tmp_name'], $source_dir.$dir.$_FILES['file_send']['name'])) {
           
    $echo "Il file &egrave; stato inviato correttamente al server!";
        }
       }
       return(
    $echo);

    Tutto qui

  3. #3
    User Newbie
    Data Registrazione
    Dec 2009
    Messaggi
    5
    Grazie Linus, a vedere così sembra uno script ben fatto e completo, però quello che serve a me è uno script per mandare più files di foto come allegato, che arrivino alla mia e-mail e per quello che ho potuto vedere non sono ruscito a capire se lo script serve per mandare e-mail con allegati multipli.
    Di seguito inserisco uno script che stò cercando di modificare, tutto funziona solo non so come aggiungere altri allegati allo stesso script (con questo ne manda solo uno...). Se qualcuno può aiutarmi sarei molto grato..

    <?php
    // Recupero il valore dei campi del form
    $destinatario = $_POST['destinatario'];
    $mittente = $_POST['mittente'];
    $oggetto = $_POST['oggetto'];
    $messaggio = "
    nombre: $nombre \n
    apellido: $apellido \n
    apodo: $apodo \n
    edad: $edad \n
    dia: $dia \n
    mes: $mes \n
    mittente: $mittente \n
    profesion: $profesion \n
    estado: $estado \n
    hijos: $hijos \n
    num: $num \n
    mujer: $numhembra \n
    varon: $numvaron \n
    estatura: $estatura \n
    peso: $peso \n
    cabellos: $cabellos \n
    ojos: $ojos \n
    descripciones: $descripciones \n ";


    // 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($allegato2))
    {

    // 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>";
    }
    ?>

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.