Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zank & ampersand w nazwie pliku
slawekdw
post 17.11.2009, 14:09:17
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 13.11.2009

Ostrzeżenie: (0%)
-----


Witam
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>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
piotrooo89
post 17.11.2009, 14:12:13
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




możesz np zamienić znak & na _ albo jakiś inny znak...


--------------------
Go to the top of the page
+Quote Post
slawekdw
post 17.11.2009, 14:30:36
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 13.11.2009

Ostrzeżenie: (0%)
-----


No włanie , zmiana znaku nie wchodzi w gre.
Go to the top of the page
+Quote Post
erix
post 17.11.2009, 14:37:02
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tzn. jak dasz unlink z nazwą z "&", to nie kasuje, czy tylko wówczas, gdy przychodzi on od użytkownika?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
slawekdw
post 17.11.2009, 15:36:51
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 13.11.2009

Ostrzeżenie: (0%)
-----


żadnej operacji na pliku z znakiem & nie da sie przeprowadzić za pomocą tego skryptu
Go to the top of the page
+Quote Post
piotrooo89
post 17.11.2009, 16:09:06
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a coś takiego Ci nie pomoże, zmiana & na ASCII: http://api.drupal.org/api/function/drupal_urlencode/5


--------------------
Go to the top of the page
+Quote Post
slawekdw
post 18.11.2009, 09:27:27
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 13.11.2009

Ostrzeżenie: (0%)
-----


A nie ma innej możliwosci ? Zmiana na ASCII powoduje to ze plik nie wyświetla sie ze znakiem &. Nie jestem buegły w php, ale czy nie mozna traktować plików za pomocą tego skryptu jako ciągu znaków np ? Pewnie to jakaś prosta sprawa i klamerki w skrypcie.
Go to the top of the page
+Quote Post
erix
post 18.11.2009, 16:21:06
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A na jakim systemie działa serwer?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:16