Um bom habito para aprender programar em qualquer linguagem é estudar códigos já prontos.
Eu tinha acabado de baixar o phpMyAdmin 2.2.6 (
http://phpmyadmin.sourceforge.net ), e após configurá-lo comecei a fuçar nos scripts contidos. Achei um script com nome zip.lib.php e passei a “brincar com ele”.
Mas antes que vocês possam “brincar” também, é necessário habilitar a biblioteca Zlib (funções para compressão de dados -
http://www.php.net/manual/pt_BR/ref.zlib.php).
Em algumas versões do PHP para win32 é só editar o arquivo php.ini, indo na linha que contém ;extension=php_zlib.dll ,retirando o “;”.
O script do zip.lib.php :
<?php
class zipfile
{
/**
* Array para armazenar dados comprimidos
*
* @var array $datasec
*/
var $datasec =
array();
/**
* diretório central
*
* @var array $ctrl_dir
*/
var $ctrl_dir =
array();
/**
* Fim do registro do diretório central
*
* @var string $eof_ctrl_dir
*/
var $eof_ctrl_dir =
"x50x4bx05x06x00x00x00x00";
/**
* Posição do último offset
*
* @var integer $old_offset
*/
var $old_offset =
0;
/**
* Converte a data no formato Unix para formato DOS
*
*/
function unix2DosTime
($unixtime =
0) {
$timearray =
($unixtime ==
0) ?
getdate() :
getdate($unixtime);
if ($timearray['year'] <
1980) {
$timearray['year'] =
1980;
$timearray['mon'] =
1;
$timearray['mday'] =
1;
$timearray['hours'] =
0;
$timearray['minutes'] =
0;
$timearray['seconds'] =
0;
} // end if
return (($timearray['year'] -
1980) <<
25) |
($timearray['mon'] <<
21) |
($timearray['mday'] <<
16) |
($timearray['hours'] <<
11) |
($timearray['minutes'] <<
5) |
($timearray['seconds'] >>
1);
}