Exemple #1
0
 function dir($name)
 {
     $name = str_replace("\\", "/", $name);
     $name = ereg_replace("^/|^//", "", $name);
     $name = ereg_replace("/\$|//\$", "", $name);
     self::$last_dir = $name;
     $fr = "PK";
     $fr .= "\n";
     // ver needed to extract
     $fr .= "";
     // gen purpose bit flag
     $fr .= "";
     // compression method
     $fr .= "";
     // last mod time and date
     $fr .= pack("V", 0);
     // crc32
     $fr .= pack("V", 0);
     //compressed filesize
     $fr .= pack("V", 0);
     //uncompressed filesize
     $fr .= pack("v", strlen($name));
     //length of pathname
     $fr .= pack("v", 0);
     //extra field length
     $fr .= $name;
     // end of "local file header" segment
     // no "file data" segment for path
     // "data descriptor" segment (optional but necessary if archive is not served as file)
     //$fr .= pack("V",$crc); //crc32
     //$fr .= pack("V",$c_len); //compressed filesize
     //$fr .= pack("V",$unc_len); //uncompressed filesize
     // add this entry to array
     self::$datasec[] = $fr;
     $new_offset = strlen(implode("", self::$datasec));
     // ext. file attributes mirrors MS-DOS directory attr byte, detailed
     // at http://support.microsoft.com/support/kb/articles/Q125/0/19.asp
     // now add to central record
     $cdrec = "PK";
     $cdrec .= "";
     // version made by
     $cdrec .= "\n";
     // version needed to extract
     $cdrec .= "";
     // gen purpose bit flag
     $cdrec .= "";
     // compression method
     $cdrec .= "";
     // last mod time & date
     $cdrec .= pack("V", 0);
     // crc32
     $cdrec .= pack("V", 0);
     //compressed filesize
     $cdrec .= pack("V", 0);
     //uncompressed filesize
     $cdrec .= pack("v", strlen($name));
     //length of filename
     $cdrec .= pack("v", 0);
     //extra field length
     $cdrec .= pack("v", 0);
     //file comment length
     $cdrec .= pack("v", 0);
     //disk number start
     $cdrec .= pack("v", 0);
     //internal file attributes
     $ext = "";
     $ext = "����";
     $cdrec .= pack("V", 16);
     //external file attributes  - 'directory' bit set
     $cdrec .= pack("V", self::$old_offset);
     //relative offset of local header
     self::$old_offset = $new_offset;
     $cdrec .= $name;
     // optional extra field, file comment goes here
     // save to array
     self::$ctrl_dir[] = $cdrec;
 }