PHP

UnZIP

Demonical Monk
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.

PHP

0 komentarzy