-
Notifications
You must be signed in to change notification settings - Fork 0
/
upload.php
66 lines (57 loc) · 1.76 KB
/
upload.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
header('Content-Type: application/json');
include_once 'globalVariables.php';
include_once 'globalFunctions.php';
$pMZ = new prashikMinZip;
$pMZ->initialisePage();
?>
<?php
global $rootDir, $shellDir, $inputFolder, $outputFolder, $fullErrorLog, $errorLogFile, $dS;
chdir($shellDir);
$pMZ->checkStartSessionsss();
$max_size = 1024 * 1024 * 200;
$extensions = array('js', 'css', 'zip');
$dir = "uploads" . $dS;
$count = 0;
if ($_SERVER['REQUEST_METHOD'] == 'POST' and isset($_FILES['files'])) {
// loop all files
foreach ($_FILES['files']['name'] as $i => $name) {
// if file not uploaded then skip it
if (!is_uploaded_file($_FILES['files']['tmp_name'][$i]))
continue;
// skip large files
if ($_FILES['files']['size'][$i] >= $max_size)
continue;
// skip unprotected files
if (!in_array(pathinfo($name, PATHINFO_EXTENSION), $extensions))
continue;
if ((($pMZ->endsWith($name, ".js") && !($pMZ->endsWith($name, ".min.js"))))) {
$dir = $inputFolder . $dS . "js" . $dS;
} elseif (($pMZ->endsWith($name, ".css") && !($pMZ->endsWith($name, ".min.css")))) {
$dir = $inputFolder . $dS . "css" . $dS;
} elseif (($pMZ->endsWith($name, ".zip"))) {
$dir = $_SESSION['ID'] . $dS . "zip" . $dS;
} else {
continue;
}
// now we can move uploaded files
$pMZ->createDirectory($dir);
if (move_uploaded_file($_FILES["files"]["tmp_name"][$i], $dir . $name))
$count++;
if (($pMZ->endsWith($name, ".zip"))) {
$zip = new ZipArchive;
$res = $zip->open($dir . $name);
if ($res === TRUE) {
$targetPath = $inputFolder;
$pMZ->createDirectory($targetPath);
$zip->extractTo($targetPath);
$zip->close();
/* echo 'ok'; */
} else {
/* echo 'failed'; */ }
}
}
ob_end_clean();
echo json_encode(array('count' => $count));
}
?>