UnZIP


Strona w budowie
Ktoś pracuje nad tą stroną, jej zawartość może się wkrótce zmienić. Prosimy o cierpliwość!



O skrypcie


Skrypt ten ma znacznie ułatwić WebMasterom wgrywanie dużych serwisów takich jak fora phpBB2 by przemo, czy może PHP-Fusion, a może nawet Moodle. UnZIP potrafi: Rozpakować archiwum ZIP, wylistować wszystkie pliki w archiwum, podać podstawowe informacje o nim. Ma także prosty Uploader, do małych plików, takich jak zarchiwizowane style do for dyskusyjnych.

Użycie skryptu


Jeśli chcesz wypakować dowolne archiwum ZIP, wypełnij następujące pola:
Nazwa archiwum: Tutaj wpisz nazwę archiwum do rozpakowania.
Folder docelowy: Tu należy wpisać folder, do którego mają zostać wypakowane pliki. Jeśli mają zostać umieszczone w folderze forum, to wpisz forum/. Ścieżka nie musi być wcześniej utworzona. Jeśli chcesz wypakować pliki do folderu, w którym uruchomiono skrypt wpisz ./ [Kropka i ukośnik].
Przekieruj do: To pole jest opcjonalne, jeśli je wypełnisz to odeśle cię do wybranego miejsca, po poprawnym rozpakowaniu.

Jeśli chcesz zobaczyć informacje o archiwum to kliknij na przycisk MakeDump, wpisz nazwę archiwum w formularzu, który się pojawi i ponownie kliknij MakeDump.

Jeśli masz małe archiwum do rozpakowania, możesz kliknąć Uploaduj Plik, wybrać plik do wrzucenia i ponownie kliknąć Uploaduj Plik, po pomyślnym wrzuceniu, zostanie on automatycznie wpisany do formularza.

Source


Tutaj znajduje się źródło mojego skryptu:
<?

/*

Skrypt wykorzystujesz na własne ryzyko!
Copyright by Demonical Monk
GG: 8669817
EMail: demonicalmonk[at]o2.pl

*/


function microtime_float2()
{
        list($usec2, $sec2) = explode(" ", microtime());
        return ((float)$usec2 + (float)$sec2);
}

$time_start2 = microtime_float2();

?>

<HTML>
<HEAD>
        <style type="text/css">
        <!--
        body {
        background-color: #EFEFEF;
        scrollbar-face-color: #EFEFEF;
        scrollbar-highlight-color: #FFFFFF;
        scrollbar-shadow-color: #DEE3E7;
        scrollbar-3dlight-color: #D1D7DC;
        scrollbar-arrow-color: #006699;
        scrollbar-track-color: #EFEFEF;
        scrollbar-darkshadow-color: #98AAB1;
        }

        .bodyline { background-color: #FFFFFF; border: 1px #98AAB1 solid; }
        font,th,td,p { font-family: Verdana, Arial, Helvetica, sans-serif }
        p, td                { font-size : 12; color : #000000; }

        hr        { height: 0px; border: solid #D1D7DC 0px; border-top-width: 1px;}
        h1,h2,h3,h4                { font-family: Arial, Helvetica, sans-serif; font-size : 19px; font-weight : bold; text-decoration : none; line-height : 100%; color : #000000;}
 
        -->
        </style>

</HEAD>
<BODY>
<?

set_time_limit(0);

function retry() {
echo(' <input type="button" style="font-family: Arial, Helvetica; font-size: 9px; color: #0033CC; font-weight: bold;" VALUE="Retry" onClick="parent.location.');
echo("href='?unpack=1'"); echo('">');
}

function dumpform() {
$title = '<b><font color="black" style="font-family: Arial; font-size: 12px;">';
$title2 = '</font></b>';

$green = '<b><font color="#009900" style="font-family: Arial; font-size: 11px;">';
$green2 = '</font></b>';

$blue = '<b><font color="#0033CC" style="font-family: Arial, Helvetica; font-size: 11px;">';
$blue2 = '</font></b>';

$red = '<b><font color="red" style="font-family: Arial, Helvetica; font-size: 11px;">';
$red2 = '</font></b>';

echo("<script>function subForm() {document.getElementById('buttonOK').disabled = true; document.getElementById('buttonOK').value = 'Czekaj...';}</script>");
echo($title . 'Zbieranie danych' . $title2 . '<br>');
echo('<form action="?dump=2" method="POST">');
echo($blue . 'Nazwa archiwum: ' . $blue2);
echo('<input type="text" style="font-family: Arial, Helvetica; font-size: 11px; color: #0033CC; font-weight: bold;" name="file">' . $red . ' (Wymagane)' . $red . '<br>');
echo('<input type="submit" style="font-family: Arial, Helvetica; font-size: 12px; color: #0033CC; font-weight: bold;" id="buttonOK" onClick="subForm()" value="MakeDump">');
echo('</form>');
}

function dump() {
$title = '<b><font color="black" style="font-family: Arial; font-size: 12px;">';
$title2 = '</font></b>';

$green = '<b><font color="#009900" style="font-family: Arial; font-size: 11px;">';
$green2 = '</font></b>';

$blue = '<b><font color="#0033CC" style="font-family: Arial, Helvetica; font-size: 11px;">';
$blue2 = '</font></b>';

$red = '<b><font color="red" style="font-family: Arial, Helvetica; font-size: 11px;">';
$red2 = '</font></b>';

echo($title . 'Wykaz danych' . $title2 . '<br>');

$za = new ZipArchive();

@$za->open($_POST["file"]);
echo $blue . "Nazwa archiwum: " . $za->filename . "<br>";
echo "Pliki w archiwum: " . $za->numFiles . "<br>";
echo "Status: " . $za->status  . "<br>";
echo "StatusSystemowy: " . $za->statusSys . "<br>";
echo "Komentarz: " . $za->comment . "<br>" . $blue2;

for ($i=0; $i<$za->numFiles;$i++) {
    $gfx = '<img src="http://img178.imageshack.us/img178/8716/textnj0.gif">';
    $dump = $za->statIndex($i);
    echo($gfx . $green . $dump['name'] . $green2);
    echo('<BR>');
}
}

function printform($p_nazwa_zm) {
$title = '<b><font color="black" style="font-family: Arial; font-size: 12px;">';
$title2 = '</font></b>';

$green = '<b><font color="#009900" style="font-family: Arial; font-size: 11px;">';
$green2 = '</font></b>';

$blue = '<b><font color="#0033CC" style="font-family: Arial, Helvetica; font-size: 11px;">';
$blue2 = '</font></b>';

$red = '<b><font color="red" style="font-family: Arial, Helvetica; font-size: 11px;">';
$red2 = '</font></b>';

echo("<script>function subForm() {document.getElementById('buttonOK').disabled = true; document.getElementById('buttonOK').value = 'Czekaj...';}</script>");
echo('<br><br>' . $title . 'Zbieranie danych' . $title2 . '<br>');
if (!$_GET["skip"]) {
echo('<form action="?unpack=1" method="POST">');} else {
echo('<form action="?skip=1" method="POST">');}
echo($blue . 'Nazwa archiwum: ' . $blue2);
if (!$p_nazwa_zm){
echo('<input type="text" style="font-family: Arial, Helvetica; font-size: 11px; color: #0033CC; font-weight: bold;" name="file" value="' . $_POST["file"] . '">' . $red . ' (Wymagane)' . $red2 . '<br>');}
if ($p_nazwa_zm){
echo('<input type="text" style="font-family: Arial, Helvetica; font-size: 11px; color: #0033CC; font-weight: bold;" name="file" value="' . $p_nazwa_zm . '">' . $red . ' (Wymagane)' . $red . '<br>');}
echo($blue . 'Folder docelowy: ' . $blue2 . '<input type="text" style="font-family: Arial, Helvetica; font-size: 11px; color: #0033CC; font-weight: bold;" value="' . $_POST["unPack"] . '" name="unPack">' . $red . ' (Wymagane)' . $red2 . '<br>');
echo($blue . 'Przekieruj do: ' . $blue2 . '<input type="text" style="font-family: Arial, Helvetica; font-size: 11px; color: #0033CC; font-weight: bold;" name="redirect">' . $red . ' (Opcjonalne)' . $red . '<br>');
echo('<input type="submit" style="font-family: Arial, Helvetica; font-size: 12px; color: #0033CC; font-weight: bold;" id="buttonOK" onClick="subForm()" value="Rozpakuj">');
echo('<input type="button" style="font-family: Arial, Helvetica; font-size: 12px; color: #0033CC; font-weight: bold;" VALUE="Uploaduj plik" onClick="parent.location.');
echo("href='?upload=1'");
echo('">');
echo('<input type="button" style="font-family: Arial, Helvetica; font-size: 12px; color: #0033CC; font-weight: bold;" VALUE="MakeDump" onClick="parent.location.');
echo("href='?dump=1'");
echo('"><br></form>');
}

function printupload() {
$title = '<b><font color="black" style="font-family: Arial; font-size: 12px;">';
$title2 = '</font></b>';

$green = '<b><font color="#009900" style="font-family: Arial; font-size: 11px;">';
$green2 = '</font></b>';

$blue = '<b><font color="#0033CC" style="font-family: Arial, Helvetica; font-size: 11px;">';
$blue2 = '</font></b>';

$red = '<b><font color="red" style="font-family: Arial, Helvetica; font-size: 11px;">';
$red2 = '</font></b>';

echo("<script>function subForm() {document.getElementById('buttonADD').disabled = true; document.getElementById('buttonADD').value = 'Czekaj...';}</script>");
echo($title . 'Zbieranie danych' . $title2 . '<br>');
echo('<form action="?upload=2" method="post" enctype="multipart/form-data">');
echo($blue . 'Wybierz plik do wrzucenia:' . $blue2 . '<br><input name="plik" type="file" style="font-family: Arial, Helvetica; font-size: 12px; color: #0033CC; font-weight: bold;" />');
echo('<input value="Uploaduj plik" id="buttonADD" onClick="javascript:subForm();" type="submit" style="font-family: Arial, Helvetica; font-size: 12px; color: #0033CC; font-weight: bold;" /></form>');
exit;
}

function charsUsed($file)
{
        if ( @file_exists($file) )
        {
                $fd = @fopen($file, 'rb');
                $fileContents = @fread($fd, @filesize($file));
                @fclose($fd);
                return strlen(str_replace(array(" ","\t","\n","\r"), '', $fileContents));
        }
        else
        {
                return false;
        }
}

$title = '<b><font color="black" style="font-family: Arial; font-size: 12px;">';
$title2 = '</font></b>';

$green = '<b><font color="#009900" style="font-family: Arial; font-size: 11px;">';
$green2 = '</font></b>';

$blue = '<b><font color="#0033CC" style="font-family: Arial, Helvetica; font-size: 11px;">';
$blue2 = '</font></b>';

$red = '<b><font color="red" style="font-family: Arial, Helvetica; font-size: 11px;">';
$red2 = '</font></b>';

$copyright = '<b><font color="#0033CC" style="font-family: Arial, Helvetica; font-size: 13px;">';
$copyright2 = '</font></b>';

echo($copyright . '<i>UnZIP by Demonical Monk</i>' . $copyright2 . '<br>');

echo($title . 'Zabezpieczenia' . $title2 . '<br>');

echo($blue . 'Ustawianie CHMODa... ' . $blue2);
$chmoder = @chmod("UnZIP.php", 0755);
if ($chmoder == TRUE) {
echo($green . 'OK<br>' . $green2);
} else {
echo($red . 'ERROR' . $red2);
retry(); exit;
}

if($_GET["dump"] == '1') {
dumpform(); exit;}

if($_GET["dump"] == '2') {
dump(); exit;}

if($_GET["upload"] == '1') {
printupload();}

if($_GET["upload"] == '2') {
echo($title . 'Wrzucanie pliku' . $title2 . '<br>');
$p_pojemnosc=$_FILES['plik']['size'];
$p_typ=$_FILES['plik']['type'];
$p_nazwa=$_FILES['plik']['name'];
$p_smiec=$_FILES['plik']['tmp_name'];
$p_nazwa_zm = $p_nazwa;
$folder = '';
if ($p_pojemnosc <= 0) {
echo($red . 'ERROR! Plik jest pusty lub ma za duży rozmiar.' . $red2 . '<br><br>');
printupload();
exit;}

if (file_exists($folder.$p_nazwa_zm)){
echo($red . 'ERROR! Plik o takiej nazwie jest już na serwerze.' . $red2);
exit;}

if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm)) {
echo($red . 'ERROR! Przenoszenie pliku zakończone fiaskiem.' . $red2);
exit;}
echo($green . 'Przesyłanie zakończone!<br>Nazwa pliku: ' . $p_nazwa_zm . $green2);
printform($p_nazwa_zm);
exit;}

echo($title . 'Przygotowywanie' . $title2 . '<br>');
echo($blue . 'Sprawdzanie wersji PHP... ' . $blue2);
if (phpversion() < '5.2.0') {echo($red . 'ERROR' . $red2); exit;}
echo($green . 'OK' . $green2 . '<br>');

echo($blue . 'Sprawdzanie zmiennych... ' . $blue2);
if (!$_POST["file"]) {echo($red . 'ERROR' . $red2); printform(''); exit;}
if (!$_POST["unPack"]) {echo($red . 'ERROR' . $red2); printform(''); exit;}
echo($green . 'OK' . $green2 . '<br>');

echo($blue . 'Sprawdzanie plikow... ' . $blue2);
if (!File_Exists($_POST["file"])) {echo($red . 'ERROR' . $red2); printform(''); exit;}
echo($green . 'OK' . $green2 .'<br>');

echo('<br>' . $title . 'Instalacja' . $title2 . '<br>');
echo($blue . 'Inicjowanie zlib... ' . $blue2);
$zip = new ZipArchive();
echo($green . 'OK' . $green2 . '<br>');

echo($blue . 'Otwieranie archiwum... ' . $blue2);
if (@$zip->open($_POST["file"]) == TRUE) {
echo($green . 'OK' . $green2 . '<br>');
} else {echo($red . 'ERROR' . $red2); exit;}

echo($blue . 'Wypakowywanie plikow... ' . $blue2);
if (@$zip->extractTo($_POST["unPack"]) == TRUE) {
echo($green . 'OK' . $green2 . '<br>');
} else {echo($red . 'ERROR' . $red2); exit;}

echo($blue . 'Zamykanie archiwum... ' . $blue2);
if (@$zip->close() == TRUE) {
echo($green . 'OK' . $green2 . '<br>');}
else {echo($red . 'ERROR' . $red2); exit;}

if($_POST["redirect"]) {
echo('<META HTTP-EQUIV=Refresh CONTENT="0; URL=' . $_POST["redirect"] . '">');}

$time_end2 = microtime_float2();
$generated_time2 = round(($time_end2 - $time_start2), 2);
echo('<br>' . $blue . 'Operacja wykonana w ' . $generated_time2 . ' s.' . $blue2);

?>
</BODY>
</HTML>


UnZIP Smart


Jeśli przedstawione powyżej rozwiązanie ci nie odpowiada, można jeszcze użyć funkcji UnZIP() która jest zdefiniowana poniżej:

function UnZIP ($file, $path) {
$zip = new ZipArchive();
$result = @$zip->open($file);
if ($result == FALSE) {
return('ErOpen');
exit;
}
$result = @$zip->extractTo($path);
if ($result == FALSE) {
return('ErExtract');
exit;
}
$result = @$zip->close();
if ($result == FALSE) {
return('ErClose');
exit;
}
return('True');
}


Parametry:
$file - archiwum do wypakowania
$path - ścieżka do folderu docelowego (nie musi istnieć)

Funkcja zwraca TRUE w przypadku pomyślnego wykonania zadania. ErOpen jeśli wystąpi błąd otwierania. ErExtract jeśli nie można wypakować archiwum. ErClose jeśli nie można zamknąć archiwum. Skrypt wymaga klasy ZipArchive dołączonej standardowo do PHP 5.2.5.
Informacje
Ostatnia modyfikacja 20-09-2009 22:47 Ostatni autor Demonical Monk
Ilość wyświetleń 2767 Wersja 7
Komentarz
Demonical Monk dnia 20-09-2009 22:45
Czemu więc robisz jakieś magiczne funkcje microtime_float2 zamiast wykorzystać microtime('gimmie_float'), która zwraca od razu floata ?

Bo można dołączyć ją do poprzednich wersji jeśli ktoś ma wenę? Oprócz tego ten przykład z floatem był w manualu jak pamiętam.
Patryk27 dnia 16-09-2009 17:32
Ciekawe, ciekawy
Demonical Monk dnia 15-09-2009 07:31
Tego gotowca trzeba i tak przepisać. Jest stary jak świat...
nav dnia 14-09-2009 19:56
Skrypt wymaga klasy ZipArchive dołączonej standardowo do PHP 5.2.5.
Czemu więc robisz jakieś magiczne funkcje microtime_float2 zamiast wykorzystać microtime('gimmie_float'), która zwraca od razu floata ?
Demonical Monk dnia 27-10-2008 21:19
ziomalski - folder docelowy to tam gdzie chcesz wypakować archiwum.
Coldpeer - enabled jest po to żeby zablokować skrypt.
Coldpeer dnia 25-10-2008 23:42
if ($enabled = true)

raczej

if ($enabled == true)

co można zapisać prościej jako

if ($enabled)

poza tym, po co w ogóle to całe $enabled?
ziomalski dnia 22-10-2008 16:41
Mam jakiś błąd w konfiguracji pomóżcie gdzie wpisać folder docelowy ?
Demonical Monk dnia 05-09-2008 23:03
HAHLOL2. Za pomocą tego skryptu znalazłem dziurę w jednym hostingu i to pewnie nie ostatni. Ta dziura pozwala na wprowadzenie dowolnego kodu przez konto roota xD
piotrulos dnia 11-08-2008 23:44
hmm ciekawy ten skrypt. warty wypróbowania

PS. to ja DJ_kosmo 14 :) jestem tutaj pod nickiem piotrulos.

Katalog
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.8088 sek. (zapytań SQL: 11)