blob: 843b2df6d04e2d008cc1d0794d6ebff2ffab186e (
plain)
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
|
<?php
namespace phorkie;
class Tools
{
public static function recursiveDelete($path)
{
if (!is_dir($path) || is_link($path)) {
return unlink($path);
}
foreach (scandir($path) as $file) {
if ($file == '.' || $file == '..') {
continue;
}
$filepath = $path . DIRECTORY_SEPARATOR . $file;
if (!static::recursiveDelete($filepath)) {
return false;
};
}
return rmdir($path);
}
/**
* Create a full URL with protocol and host name
*
* @param string $path Path to the file, with leading /
*
* @return string Full URL
*/
public static function fullUrl($path)
{
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) {
$prot = 'https';
} else {
$prot = 'http';
}
return $prot . '://' . $_SERVER['HTTP_HOST'] . $path;
}
/**
* Removes malicious parts from a file name
*
* @param string $file File name from the user
*
* @return string Fixed and probably secure filename
*/
public static function sanitizeFilename($file)
{
$file = trim($file);
$file = str_replace(array('\\', '//'), '/', $file);
$file = str_replace('/../', '/', $file);
if (substr($file, 0, 3) == '../') {
$file = substr($file, 3);
}
if (substr($file, 0, 1) == '../') {
$file = substr($file, 1);
}
return $file;
}
}
?>
|