Visualizzazione risultati 1 fino 6 di 6

Discussione: Aborrire i limiti dell'upload

  1. #1
    pokestudio non è connesso Altervistiano Junior
    Data registrazione
    16-01-2004
    Residenza
    127.0.0.1
    Messaggi
    547

    Predefinito Aborrire i limiti dell'upload? E' possibile!

    E' possibile! Da una mia recente scoperta basta uploadare nel proprio spazio la classe di una libreria di multicompressione (cercate in PEAR). AV per fortuna nn puo' togliere l'estensione zlib (nn hanno messo la bz2!!! ) percio' possiamo benissimo cominciare ad abolire i problemi di upload usando la libreria File_Archive:

    1) La dimensione di upload (2MB) :
    l'user manda un file (es: materiale.doc) che e' superiore a 2MB. Che facciamo? Il caricamento va a vuoto... Allora l'user comprime il suo file in zip. Il file e' minore di 2MB ma PHP da solo nn puo' leggere il file zip (serve l'estensione apposita che AV nn sara' MAI disposta ad attivare!). Quindi File_Archive con la sua OOPta' decomprime il file che sara' leggibile nello spazio web.

    2) Uploadare una cartella :
    Molti utenti hanno chiesto di poter uploadare anche le cartelle. Ma si sa' che AV e' peggio di eMule :smile: . Poi PHP puo' comprimere un solo file tramite Gzip! E si sa che nn si possono estrarre i file zip! Ma che facciamo?? File_Archive (con la sua OOPta') puo' decomprimere i file di un zip (come ho detto prima). Ma che succede se il file zip e' superiore a 2MB? L'user sara' costretti a splittare il file zip. E se l'user ha trovato un migliore ratio di compressione con tar.gz? PHP da solo puo' decomprimere il file gzip, MA lasciamo in tatto il file tar??? Archive_Tar puo' estrarre la cartella. Ma noi usiamo File_Archive! Estratti tutti i files dal tar voila'!

    La seconda tecnica e' TROPPO UTILE se si bisogna uploadare TUTTI i mini-file di PHP-Nuke o di qualsiasi script preconfezzionato (da Makpaolo ) percio' chiedo ai mod di mettere in rilievo questo utile topic! Poi vi consiglio di utilizzare File_Archive per comprimere/decomprimere files in PHP perche' e' il piu' veloce! Il sito e' http://poocl.la-grotte.org e qui sotto posto la funzione per decomprimere i files Gzip da Aaron G.

    Codice PHP:
    <?php

    function gzdecode($data) {
    $len = strlen($data);
    if (
    $len < 18 || strcmp(substr($data,0,2),"\x1f\x8b")) {
    return
    null; // Not GZIP format (See RFC 1952)
    }
    $method = ord(substr($data,2,1)); // Compression method
    $flags = ord(substr($data,3,1)); // Flags
    if ($flags & 31 != $flags) {
    // Reserved bits are set -- NOT ALLOWED by RFC 1952
    return null;
    }
    // NOTE: $mtime may be negative (PHP integer limitations)
    $mtime = unpack("V", substr($data,4,4));
    $mtime = $mtime[1];
    $xfl = substr($data,8,1);
    $os = substr($data,8,1);
    $headerlen = 10;
    $extralen = 0;
    $extra = "";
    if (
    $flags & 4) {
    // 2-byte length prefixed EXTRA data in header
    if ($len - $headerlen - 2 < 8) {
    return
    false; // Invalid format
    }
    $extralen = unpack("v",substr($data,8,2));
    $extralen = $extralen[1];
    if (
    $len - $headerlen - 2 - $extralen < 8) {
    return
    false; // Invalid format
    }
    $extra = substr($data,10,$extralen);
    $headerlen += 2 + $extralen;
    }

    $filenamelen = 0;
    $filename = "";
    if (
    $flags & 8) {
    // C-style string file NAME data in header
    if ($len - $headerlen - 1 < 8) {
    return
    false; // Invalid format
    }
    $filenamelen = strpos(substr($data,8+$extralen),chr(0));
    if (
    $filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8) {
    return
    false; // Invalid format
    }
    $filename = substr($data,$headerlen,$filenamelen);
    $headerlen += $filenamelen + 1;
    }

    $commentlen = 0;
    $comment = "";
    if (
    $flags & 16) {
    // C-style string COMMENT data in header
    if ($len - $headerlen - 1 < 8) {
    return
    false; // Invalid format
    }
    $commentlen = strpos(substr($data,8+$extralen+$filenamelen),chr(0));
    if (
    $commentlen === false || $len - $headerlen - $commentlen - 1 < 8) {
    return
    false; // Invalid header format
    }
    $comment = substr($data,$headerlen,$commentlen);
    $headerlen += $commentlen + 1;
    }

    $headercrc = "";
    if (
    $flags & 1) {
    // 2-bytes (lowest order) of CRC32 on header present
    if ($len - $headerlen - 2 < 8) {
    return
    false; // Invalid format
    }
    $calccrc = crc32(substr($data,0,$headerlen)) & 0xffff;
    $headercrc = unpack("v", substr($data,$headerlen,2));
    $headercrc = $headercrc[1];
    if (
    $headercrc != $calccrc) {
    return
    false; // Bad header CRC
    }
    $headerlen += 2;
    }

    // GZIP FOOTER - These be negative due to PHP's limitations
    $datacrc = unpack("V",substr($data,-8,4));
    $datacrc = $datacrc[1];
    $isize = unpack("V",substr($data,-4));
    $isize = $isize[1];

    // Perform the decompression:
    $bodylen = $len-$headerlen-8;
    if (
    $bodylen < 1) {
    // This should never happen - IMPLEMENTATION BUG!
    return null;
    }
    $body = substr($data,$headerlen,$bodylen);
    $data = "";
    if (
    $bodylen > 0) {
    switch (
    $method) {
    case
    8:
    // Currently the only supported compression method:
    $data = gzinflate($body);
    break;
    default:
    // Unknown compression method
    return false;
    }
    } else {
    // I'm not sure if zero-byte body content is allowed.
    // Allow it for now... Do nothing...
    }

    // Verifiy decompressed size and CRC32:
    // NOTE: This may fail with large data sizes depending on how
    // PHP's integer limitations affect strlen() since $isize
    // may be negative for large sizes.
    if ($isize != strlen($data) || crc32($data) != $datacrc) {
    // Bad format! Length or CRC doesn't match!
    return false;
    }
    return
    $data;
    }

    ?>
    Ultima modifica di pokestudio : 10-09-2005 alle ore 18.32.48
    Dal server 5 con amore

  2. #2
    Guest

    Predefinito

    Le informazioni che fornisci sono interessanti, ma non dovresti parlare male di AV. Un'altra cosa: questo thread penso che sarebbe stato meglio nel Livello 3... ;-)

  3. #3
    Ospite Guest

    Predefinito

    beh forse anche su livello 2 perchè si parla di upload :D

  4. #4
    pokestudio non è connesso Altervistiano Junior
    Data registrazione
    16-01-2004
    Residenza
    127.0.0.1
    Messaggi
    547

    Predefinito

    Io l'ho messo per pubblicita' e se i mod vogliono lo spostano...
    Dal server 5 con amore

  5. #5
    L'avatar di Taitaonline
    Taitaonline non è connesso Utente storico
    Data registrazione
    11-03-2004
    Residenza
    Zena
    Messaggi
    3,317

    Predefinito

    In effetti potrebbe stare in tutte e due le sezioni citate ...
    Vabbé, per adesso spostiamo in livello 3: è pur sempre una funzione in php, no? ... e non riguarda "per forza" un servizio offerto da AV.
    ...Il grano che nasce e l'acqua che va, è un dono di tutti, padroni non ha...
    My Site FAQ di AlterVista Regolamento di AlterVista

  6. #6
    pokestudio non è connesso Altervistiano Junior
    Data registrazione
    16-01-2004
    Residenza
    127.0.0.1
    Messaggi
    547

    Predefinito

    Per ora questa sez mi sembra ok.. ma nn vedo nessuno interessato...
    Dal server 5 con amore

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •