cdata[] = $fd; $cd = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00" .pack("V", 0) .pack("V", 0) .pack("V", 0) .pack("v", strlen ($name)) .pack("v", 0) .pack("v", 0) .pack("v", 0) .pack("v", 0) .pack("V", 16) .pack("V", $this->offset) .$name; $this->offset = strlen(implode('', $this->cdata)); $this->cdir[] = $cd; } // -------------------------------------------------------------------- /** * Add a File * * @access public * @param string * @return void */ function add_file($data, $name) { $name = str_replace("\\", "/", $name); $u_len = strlen($data); $crc = crc32($data); $data = gzcompress($data); $data = substr(substr($data, 0,strlen ($data) - 4), 2); $c_len = strlen($data); $fd = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00\x00\x00" .pack("V", $crc) .pack("V", $c_len) .pack("V", $u_len) .pack("v", strlen($name)) .pack("v", 0) .$name .$data .pack("V", $crc) .pack("V", $c_len) .pack("V", $u_len); $this->zdata[] = $fd; $cd = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00\x00\x00\x00\x00" .pack("V", $crc) .pack("V", $c_len) .pack("V", $u_len) .pack("v", strlen ($name)) .pack("v", 0) .pack("v", 0) .pack("v", 0) .pack("v", 0) .pack("V", 32 ) .pack("V", $this->offset) .$name; $this->offset = strlen(implode('', $this->zdata)); $this->cdir[] = $cd; } // -------------------------------------------------------------------- /** * Output the zip file * * @access public * @return string */ function output_zipfile() { $data = implode("", $this->zdata); $cdir = implode("", $this->cdir); return $data .$cdir ."\x50\x4b\x05\x06\x00\x00\x00\x00" .pack("v", sizeof($this->cdir)) .pack("v", sizeof($this->cdir)) .pack("V", strlen($cdir)) .pack("V", strlen($data)) ."\x00\x00"; } } // END CLASS ?>