Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Usuwanie pliku przez użytkownika
tosiek
post 6.07.2009, 09:36:35
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

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


Witam. Mam prosty zamiar dać użytkownikowi możliwość usunięcia pliku.

Aktualnie zapisuję sobie:
  1. <?php
  2. $czas = time();
  3. $nazwa = $czas . $_FILES['userfile']['name'];
  4. file_put_contents(dirname(__FILE__) . "/../../../../wynikowe/" . $nazwa, $plik);
  5. ?>


No i podaję bezpośredni link do pobrania. I link do usunięcia który działa w ten sposób:
  1. <?php
  2. if(isset($_GET['usun']))
  3. {
  4. unlink(dirname(__FILE__) . "/../../../../wynikowe/" . urldecode($_GET['usun']));
  5. echo "plik usuniety";
  6. }
  7. echo '<a href="http://tosiek.pl/converter/?usun=' . urlencode($nazwa) . '">Usuń plik: ' . $_FILES['userfile']['name'] . '</a>';
  8. ?>


I teraz pytanie czy przez to unlink da się usunąć inne pliki, poza katalogiem wynikowe ? I jak to zabezpieczyć ?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
leovandamon
post 6.07.2009, 10:38:01
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 5.01.2008
Skąd: Czwarty Świat

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


pyro, jak już mówiłem, pisałem to x lat temu, kiedy zaczynałem z php. Wiem, że jest to bez sensu, bo można szybciej. Ale wykorzystuję przeważnie tryb "easy" i działa szybko. Mimo wszystko, dzięki. Unowocześnię kod.

tosiek, tak. User nie może wychodzić do katalogu wyżej, bo wtedy mógłby usunąć ci dowolny plik z serwera (powiedzmy index.php). Dajesz coś takiego:

  1. <?php
  2. $katalog = 'upload'; // katalog uploadu
  3. if($_GET['usun']) {
  4. $usun = clear($_GET['usun']);
  5. $plik = $katalog.'/'.$usun;
  6. unlink($plik);
  7. }
  8. ?>


Pisałem z palca. winksmiley.jpg

User może wywalić Ci coś z katalogu upload, ale nie może wyjść wyżej. Pozostaje kwestia sprawdzania, czy user może usunąć plik, ale jeśli jako $katalog dasz katalog usera, w którym pliki należą do niego, to tylko te może usunąć. Możesz też sprawdzać w bazie MySQL lub na setki innych sposobów, decyzję pozostawiam Tobie.

Ten post edytował leovandamon 6.07.2009, 10:41:25


--------------------
Mój blog: http://test.dragonsheart.eu/
DH Corp: http://www.dhcorp.pl/
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.06.2025 - 07:50