Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    [Sicurezza PHP] Upload di file, inserirlo in archivio .zip e invio. Come fare?

    Ciao a tutti,

    ho uno script che gestisce l'upload di un file immagine per poi farlo inviare via email dall'utente.

    A livello di sicurezza, stavo pensando che forse sarebbe meglio però inserire il file selezionato dall'utente in un archivio .zip. In modo tale che quando lo si invia, prima della sua apertura sia posto all'interno di questo archivio per poter verificare se si tratta di un virus o altro.

    Come si aggiunge un file immagine in un archivio zip con PHP ?

  2. #2
    Codice PHP:
    $zip = new ZipArchive();
    $filename "./test112.zip";

    if (
    $zip->open($filenameZIPARCHIVE::CREATE)!==TRUE) {
        exit(
    "cannot open <$filename>\n");
    }

    $zip->addFromString("testfilephp.txt" time(), "#1 This is a test string added as testfilephp.txt.\n");
    $zip->addFromString("testfilephp2.txt" time(), "#2 This is a test string added as testfilephp2.txt.\n");
    $zip->addFile($thisdir "/too.php","/testfromfile.php");
    echo 
    "numfiles: " $zip->numFiles "\n";
    echo 
    "status:" $zip->status "\n";
    $zip->close(); 

  3. #3
    Dascos scusa il disturbo ma ... visto che sei stato così veloce nel rispondere e sopraatutto esaustivo.. non è che daresti un occhiata al mio post di qualche minuto fa??

  4. #4
    Originariamente inviato da sberla_J.
    Dascos scusa il disturbo ma ... visto che sei stato così veloce nel rispondere e sopraatutto esaustivo.. non è che daresti un occhiata al mio post di qualche minuto fa??
    Oste...fammelo trovare

  5. #5
    Ehmmmm...Dascos..ti ringrazio MILLE per il codice ma...potresti spiegarmelo? eheh..sono nuovo riguardo questo argomento

  6. #6
    Te lo commento

    Codice PHP:
    $zip = new ZipArchive(); // Apre un handler per il file
    $filename "./test112.zip"// Nome del file da creare

    if ($zip->open($filenameZIPARCHIVE::CREATE)!==TRUE) { // SE non riesce a creare il file
        
    exit("Non posso aprire il file <$filename>\n"); // Errore
    }

    $zip->addFromString("testfilephp.txt" time(), "#1 This is a test string added as testfilephp.txt.\n"); // Aggiungo, da stringa pura, un file che chiamo, nello zip, testfilephp.txt+"adesso". Il contenuto di questo file è  "#1 This is a test string added as testfilephp.txt.\n"
    $zip->addFromString("testfilephp2.txt" time(), "#2 This is a test string added as testfilephp2.txt.\n"); // Aggiungo, da stringa pura, un file che chiamo, nello zip, testfilephp.txt+"adesso". Il contenuto di questo file è  "#2 This is a test string added as testfilephp2.txt.\n"
    $zip->addFile($thisdir "/too.php","/testfromfile.php"); // Aggiungo i file too.php e testfromfile.php dalla directory corrente
    echo "numfiles: " $zip->numFiles "\n"// Scrivo a video il numero di files aggiunti
    echo "status:" $zip->status "\n"// Scrivo lo stato del file zip
    $zip->close(); // Chiudo l'handle del file 

  7. #7
    Grazie grazie grazie! Un ultimo accorgimento ( ti prego di non maledirmi per questo ),
    dato che io devo inserire un file immagine, che uploaderà l'utente...come devo fare?

    Stessa procedura?

    Ti faccio una statua per ringraziarti!!!

  8. #8
    Sì, stessa procedura.
    Ovviamente il file arriva o da upload tramite form o dal file system del server, quindi userai $zip->addFile("nome_del_file_completo_di_percorso_ed_es tensione");

    Se arriva da upload, devi prima slavare il file da qualche parte (se ti serve in seguito) o usare il file temporaneo;
    Se lo prendi dal server, userai il percorso assoluto del file esistente

    $zip->addFromString lo si usa se per esempio si vuole salvare un post, un articolo ecc direttamente "senza passare dal via"



  9. #9
    Mmmmmmmmh allora ti dico..

    Il file verrà uploadato dall'utente. Quindi la logica dovrebbe essere questa:

    1 - L'utente sceglie il file immagine attraverso l'input/type=file
    2 - Quando l'utente invia i dati, il mio script PRIMA lo chiude nell'archivio zip e POI lo invia tramite EMAIL


    ..quindi, correggimi se sbaglio, il file dovrà essere preso da... $_FILES['fileUtente']['tmp_name'] giusto??

    Ti sto stressando perdonami ma mi sei di grande aiuto!!

    PS: non voglio aggiungere nessuna $zip->addFromString

    PPS: nel phpinfo() del mio dominio non c'è alcun riferimento a nessuna roba del tipo .zip ..è un problema??

  10. #10
    Sì esatto, se non ti serve tenere il file, lo prendi da $_FILES['fileUtente']['tmp_name'] (però occhio che avrà il nome tempraneo!!).
    Forse è meglio se prima lo salvi col classico move_uploaded_file, poi lo metti nello zip e alla fine cancelli il file salvato...

    Se non hai l'estensione zip sì, può essere un problema, ma quel che devi cercare è zlib, non zip...
    Se nn hai l'estensione zlib:
    codice:
    PHP 5.2.0 and later
    Linux systems
    In order to use these functions you must compile PHP with zip support by using the --enable-zip configure option.
    
    Windows
    Windows users need to enable php_zip.dll inside of php.ini in order to use these functions.
    
    Installation via PECL
    Information for installing this PECL extension may be found in the manual chapter titled Installation of PECL extensions. Additional information such as new releases, downloads, source files, maintainer information, and a CHANGELOG, can be located here: http://pecl.php.net/package/zip.
    
    The DLL for this PECL extension may be downloaded from either the PHP Downloads page or from http://pecl4win.php.net/
    
    In PHP 4 this DLL resides in the extensions/ directory within the PHP Windows binaries download.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.