ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

php архиватор
  #1  
Старый 06.05.2008, 13:02
Аватар для -=M@N=-
-=M@N=-
Новичок
Регистрация: 26.03.2007
Сообщений: 20
Провел на форуме:
30027

Репутация: 2
Question php архиватор

Ищу скрипт php архиватора, который сможет создавать архивы из нескольких файлов, например:

есть список предположим из 20 ссылок на файлы, возле кадой ссылки есть чекбокс. Если нажать просто на ссылку то качается один из 20 файлов, а если выделить несколько чекбоксов и ниже нажать кнопку скачать, то создается архив с сгенерированным именем на некоторе время(пусть будет 3 часа) , а в этом архиве будут выделенные чекбоком файлы. Через 3 часа архив должен сам удалится...

Чтото подобное реализовано здесь: http://gdmods.alibom.net/index.php?action=master&sm=show


зы: есть плагин для одного движка, там можно каждый файл архивировать по отдельности, но нельзя архивировать несколько файлов сразу, если пригодится я могу выложить
 
Ответить с цитированием

  #2  
Старый 06.05.2008, 19:27
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

system("rar a -m0 $arc $files &")
 
Ответить с цитированием

  #3  
Старый 06.05.2008, 20:09
Аватар для -=M@N=-
-=M@N=-
Новичок
Регистрация: 26.03.2007
Сообщений: 20
Провел на форуме:
30027

Репутация: 2
По умолчанию

А можно маленький пример?
Что должно быть в $arc и $files ?
 
Ответить с цитированием

  #4  
Старый 06.05.2008, 21:06
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

ну прочитай хелп к рару или другому архиватору.
 
Ответить с цитированием

  #5  
Старый 06.05.2008, 21:23
Аватар для Pernat1y
Pernat1y
Постоянный
Регистрация: 20.12.2007
Сообщений: 577
Провел на форуме:
1636674

Репутация: 171


По умолчанию

http://ua.php.net/manual/ru/book.zip.php
у них-же есть модули для прямой работы с зип, бз2. зачем морочиться?
 
Ответить с цитированием

  #6  
Старый 06.05.2008, 23:18
Аватар для ShAnKaR
ShAnKaR
Пачка маргарина
Регистрация: 14.07.2005
Сообщений: 964
Провел на форуме:
4646474

Репутация: 1424


Отправить сообщение для ShAnKaR с помощью ICQ
По умолчанию

под себя переделвал php class tar
PHP код:
<?
function Ch($b) {
$u=0;
for(
$i=0;$i<512;$i++)
$u+=ord($b[$i]);
for(
$i=0;$i<8;$i++)
$u-=ord($b[148+$i]);
$u+=ord(" ")*8;
return 
$u;
}

$arrfw=array('./');
$arrfile=array();
$ife=0;
while(++
$ife<=count($arrfw)){
$pathfw=$arrfw[$ife-1];
if(
is_readable($pathfw)){
if(
$hfw=opendir($pathfw)){
while(
false!==($ffw=readdir($hfw))){
$ffw=$pathfw.$ffw;
if(!
preg_match('/\/\.+$/',$ffw)){
if(
is_dir($ffw) && !preg_match('!/log$!',$ffw)){array_push($arrfw,$ffw.'/');print $ffw.'<br>';}
else 
array_push($arrfile,$ffw);
}}
closedir($hfw);}}}

$fpp=fopen('x.tar',"wb");


$pq=preg_quote($arrfw[0]);
array_shift($arrfw);
foreach(
$arrfw as $dn){
$in=@stat($dn);
$dn=preg_replace("!^$pq!",'',$dn);
$hr=str_pad($dn,100,"\0").str_pad(decoct($in["mode"]),7,"0",STR_PAD_LEFT)."\0".str_pad(decoct($in["uid"]),7,"0",STR_PAD_LEFT)."\0".str_pad(decoct($in["gid"]),7,"0",STR_PAD_LEFT)."\0".str_pad(decoct(0),11,"0",STR_PAD_LEFT)."\0".str_pad(decoct($in["ctime"]),11,"0",STR_PAD_LEFT)."\0".str_repeat(" ",8)."5".str_repeat("\0",100).str_pad("ustar",6," ")." "."\0".str_pad("",32,"\0").str_pad("",32,"\0").str_repeat("\0",8).str_repeat("\0",8).str_repeat("\0",155).str_repeat("\0",12);
$cm=str_pad(decoct(Ch($hr)),6,"0",STR_PAD_LEFT);
for(
$i=0;$i<6;$i++){$hr[(148+$i)]=substr($cm,$i,1);}
$hr[154]="\0";
$hr[155]=" ";
fwrite($fpp,$hr);
}

foreach(
$arrfile as $fl){
if(
filesize($fl)>31457280)break;
$in=@stat($fl);
$fp=@fopen($fl,"rb");
$fi=@fread($fp,filesize($fl));
@
fclose($fp);
$fl=preg_replace("!^$pq!",'',$fl);
$he=str_pad($fl,100,"\0").str_pad(decoct($in["mode"]),7,"0",STR_PAD_LEFT)."\0".str_pad(decoct($in["uid"]),7,"0",STR_PAD_LEFT)."\0".str_pad(decoct($in["gid"]),7,"0",STR_PAD_LEFT)."\0".str_pad(decoct($in["size"]),11,"0",STR_PAD_LEFT)."\0".str_pad(decoct($in["ctime"]),11,"0",STR_PAD_LEFT)."\0".str_repeat(" ",8)."0".str_repeat("\0",100).str_pad("ustar",6," ")." \0".str_pad("",32,"\0").str_pad("",32,"\0").str_repeat("\0",183);
$cm=str_pad(decoct(Ch($he)),6,"0",STR_PAD_LEFT);
for(
$i=0;$i<6;$i++){$he[(148+$i)]=substr($cm,$i,1);}
$he[154]="\0";
$he[155]=" ";
$fi=str_pad($fi,(ceil($in["size"]/512)*512),"\0");
fwrite($fpp,$he.$fi);
}

fwrite($fpp,str_repeat("\0",512));
fclose($fpp);
после тара можно в gzip или bzip запихнуть это не проблема.

Последний раз редактировалось ShAnKaR; 06.05.2008 в 23:21..
 
Ответить с цитированием

  #7  
Старый 06.05.2008, 23:26
Аватар для -=M@N=-
-=M@N=-
Новичок
Регистрация: 26.03.2007
Сообщений: 20
Провел на форуме:
30027

Репутация: 2
По умолчанию

у меня есть класс pclzip

просто я незнаю как засунуть в архим не один файл, а несколько выбранных...
чтобы заархивировать файл используется всего лиш одна функция которая передает классу данные для упаковки...я просто непонимаю как передать несколько файлов....

если надо, могу выложить сам класс

вот сама функция:

PHP код:
function file_funct($action,$dir,$file,$tmp="") {
    global 
$locale;

    
$error "";
    if (
$action == "add_arh") {
        
$file_name substr($file,0,strrpos($file,"."));
        if (!
file_exists(BASEDIR.$dir.$file)){$error $locale['fmf029']."<br>\n";}
        else if (
file_exists(BASEDIR.$dir.$file_name.".zip")){$error $locale['fmf028']."<br>\n";}
        if(!
$error) {
            
$pclzip = new PclZip(BASEDIR.$dir.$file_name.".zip");
            
$arh $pclzip->create(BASEDIR.$dir.$filePCLZIP_OPT_COMMENT"подпись к архиву"PCLZIP_OPT_REMOVE_PATHBASEDIR.$dir);
            if (
$arh == 0) {
                
$error $locale['fmf013']."<br>\n";
                
opentable("<center>".$locale['fmf020']."</center>");
                echo 
"<center>$error <a href='".FUSION_SELF."?dir=$dir'>".$locale['fmf022']."</a></center>";
                
closetable();
            } else {
                
chmod(BASEDIR.$dir.$file_name.".zip",0644);
                
redirect(FUSION_SELF."?dir=$dir");
            }
        } else {
            
opentable("<center>".$locale['fmf020']."</center>");
            echo 
"<center>$error <a href='".FUSION_SELF."?dir=$dir'>".$locale['fmf022']."</a></center>";
            
closetable();
        }
    } else {
        
redirect(FUSION_SELF."?dir=$dir");
    }

 
Ответить с цитированием

  #8  
Старый 06.05.2008, 23:30
Аватар для ShAnKaR
ShAnKaR
Пачка маргарина
Регистрация: 14.07.2005
Сообщений: 964
Провел на форуме:
4646474

Репутация: 1424


Отправить сообщение для ShAnKaR с помощью ICQ
По умолчанию

на счет моего скрипта:
там массив дается
PHP код:
$arrfw=array('./'); 
это начальная папка, потом рекурсивно читаются все файлы в ней и по очереди тарятся, можно не делать рекурсию а в ручную на пихать в этот массив пути до нужных файлов.
вот и все.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Local include && PHP baz1k Чужие Статьи 0 10.01.2008 04:50
Что такое Php? PAPA212 Болталка 13 28.12.2007 20:44
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ