Mam skrypt zarządzajacy zawartościa katalogów z poziomu przegladarki. Umożliwia on Upload, Download, i Kasowanie plików. Niestety , o ile poradziłem sobie z polskimi znakami w nazwi pliku, nie potrafie Uploadowac, Skasować czy tez pobrac pliku który posiada znak & ampersand w nazwie. Czy istnieje na to jakieś rozwiązanie, procz oczywiście wykluczenia stosowanie takiego znaku w nazwie pliku. Poniżej kod skryptu.
CODE
<?php
session_start();
if(!isset($katalog)) {
echo 'Brak dostępu. Zaloguj sie jako administrator';
exit;
}
if(!is_null($_POST["kat"]) && $_POST["kat"] != "") {
$_SESSION['folder']= $_POST["kat"];
}
$readpath = "/$katalog/$folder/";
$hide = array( 'resources',
'index.php',
'.htaccess',
'.htpasswd',
'.DS_Store');
error_reporting(E_ERROR);
if ($_GET['download']) {
$file = str_replace('/', '', $_GET['download']);
$file = str_replace('..', '', $file);
$file = $readpath.$file;
if (file_exists($file)) {
header("Content-type: application/x-download");
header("Content-Length: ".filesize($file));
header('Content-Disposition: attachment; filename="' . str_replace($readpath, '', $file) . '"');
readfile($file);
die();
}
}
$handle = opendir($readpath);
// If deleting
if (isset($_GET['rmfile'])) {
unlink($readpath . $_GET['rmfile']);
}
// If uploading
if ($_FILES['file']) {
$success = move_uploaded_file($_FILES['file']['tmp_name'], $readpath. $_FILES['file']['name']);
}
$key=0;
while ($file = readdir($handle)) {
if ($file == "." || $file == ".." || in_array($file, $hide)) continue;
$key++;
$files[$key] = $file;
}
closedir($handle);
// ksort($files, SORT_NUMERIC);
$files = array_reverse($files);
?>
<!DOCTYPE html>
<html>
<head>
<title>Manager plikow Klienta</title>
<link rel="stylesheet" type="text/css" href="images/styles.css">
</head>
<body>
<table border="0" cellspacing="5" cellpadding="5">
<?php
for ($i=0; $i<count($files); $i++) {
$filename = $files[$i];
?>
<tr>
<td><a href="manager.php?download=<?php echo $filename; ?>"><?php echo $filename; ?></a></td>
<td><a href="manager.php?rmfile=<?php echo $filename; ?>">Kasuj</a></td>
</tr>
<?php };?>
</table>
<div id="upload">
<div style="text-align: left; color: rgb(51, 102, 255);"><span
style="font-family: Verdana; ">Wybierz plik do wgrania</span><p>
</p>
<form method="post" action="manager.php" enctype="multipart/form-data">
<p><input type="file" name="file"></p>
<p></center><input type="submit" value="Wgraj plik"></p>
</form>
<div id="wybor">
<div style="text-align: left; color: rgb(51, 102, 255);"><span
style="font-family: Verdana; ">Wybierz katalog</span><p>
</p>
<form action="manager.php" method="post" name="Wybierz katalog">
<select name="kat" >
<option selected="selected" value="Dane">Podstawowe informacje</option>
<option value="Download">Download</option>
<option value="Info">Informacje</option>
<option value="Deklaracje">Deklaracje</option>
<option value="Archiwum">Archiwum</option>
</select>
<p><input type="submit" value="Zatwierdz"></p>
</form>
</div>
</body>
</html>
session_start();
if(!isset($katalog)) {
echo 'Brak dostępu. Zaloguj sie jako administrator';
exit;
}
if(!is_null($_POST["kat"]) && $_POST["kat"] != "") {
$_SESSION['folder']= $_POST["kat"];
}
$readpath = "/$katalog/$folder/";
$hide = array( 'resources',
'index.php',
'.htaccess',
'.htpasswd',
'.DS_Store');
error_reporting(E_ERROR);
if ($_GET['download']) {
$file = str_replace('/', '', $_GET['download']);
$file = str_replace('..', '', $file);
$file = $readpath.$file;
if (file_exists($file)) {
header("Content-type: application/x-download");
header("Content-Length: ".filesize($file));
header('Content-Disposition: attachment; filename="' . str_replace($readpath, '', $file) . '"');
readfile($file);
die();
}
}
$handle = opendir($readpath);
// If deleting
if (isset($_GET['rmfile'])) {
unlink($readpath . $_GET['rmfile']);
}
// If uploading
if ($_FILES['file']) {
$success = move_uploaded_file($_FILES['file']['tmp_name'], $readpath. $_FILES['file']['name']);
}
$key=0;
while ($file = readdir($handle)) {
if ($file == "." || $file == ".." || in_array($file, $hide)) continue;
$key++;
$files[$key] = $file;
}
closedir($handle);
// ksort($files, SORT_NUMERIC);
$files = array_reverse($files);
?>
<!DOCTYPE html>
<html>
<head>
<title>Manager plikow Klienta</title>
<link rel="stylesheet" type="text/css" href="images/styles.css">
</head>
<body>
<table border="0" cellspacing="5" cellpadding="5">
<?php
for ($i=0; $i<count($files); $i++) {
$filename = $files[$i];
?>
<tr>
<td><a href="manager.php?download=<?php echo $filename; ?>"><?php echo $filename; ?></a></td>
<td><a href="manager.php?rmfile=<?php echo $filename; ?>">Kasuj</a></td>
</tr>
<?php };?>
</table>
<div id="upload">
<div style="text-align: left; color: rgb(51, 102, 255);"><span
style="font-family: Verdana; ">Wybierz plik do wgrania</span><p>
</p>
<form method="post" action="manager.php" enctype="multipart/form-data">
<p><input type="file" name="file"></p>
<p></center><input type="submit" value="Wgraj plik"></p>
</form>
<div id="wybor">
<div style="text-align: left; color: rgb(51, 102, 255);"><span
style="font-family: Verdana; ">Wybierz katalog</span><p>
</p>
<form action="manager.php" method="post" name="Wybierz katalog">
<select name="kat" >
<option selected="selected" value="Dane">Podstawowe informacje</option>
<option value="Download">Download</option>
<option value="Info">Informacje</option>
<option value="Deklaracje">Deklaracje</option>
<option value="Archiwum">Archiwum</option>
</select>
<p><input type="submit" value="Zatwierdz"></p>
</form>
</div>
</body>
</html>