![]() |
![]() ![]() |
![]() |
![]()
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:
No i podaję bezpośredni link do pobrania. I link do usunięcia który działa w ten sposób:
I teraz pytanie czy przez to unlink da się usunąć inne pliki, poza katalogiem wynikowe ? I jak to zabezpieczyć ? -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 41 Pomógł: 3 Dołączył: 5.01.2008 Skąd: Czwarty Świat Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Napisałem kiedyś funkcyjkę... Może ci się przyda. Ja używam jej do czyszczenia zmiennej z nazwą includowanego pliku.
i użycie:
Możesz podać drugi parametr (easy, normal, full). Easy jest domyślnym i jest "akurat" do nazw plików. Normal zamienia większość znaków na encje HTML i do tego polskie znaki diakrytyczne na te bez "kropek" i "ogonków". Full całkiem usuwa wszystkie bardziej "niebezpieczne" znaki. Na pewno możnaby to zrobić lepiej, jednak pisałem to parę lat temu. Mnie wystarcza. Poza tym, niedawno pisałem "eksplorator", być może coś ci się przyda. http://dragonsheart.eu/-/php/manager.txt Część kodu to funkcje bezpośrednio to użycia w moim programie, więc nie zwracaj uwagi. ![]() Pozdrawiam, Leo van Damon -------------------- Mój blog: http://test.dragonsheart.eu/
DH Corp: http://www.dhcorp.pl/ |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
leovandamon, Twój kod jest totalnie bez sensu. Wywołujesz tę samą funkcję kilkadziesiąt razy, a wystarczy:
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Czyli do zastapienia są ../ jak i ./ oraz / i // ? nic więcej ?
![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() 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:
Pisałem z palca. ![]() 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/ |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
tym razem napisalem coś takiego:
tablica danger: Kod $danger = array("../", "./", "//", "/", "\\\\", "\\", ".htaccess", "index.htm", );
ale już nie mam pomysłu czemu nadal moge usuwać ../plik.php .htaccess i inne ;/ zmiana: !file_exists(dirname(__FILE__) . "/../../../../wynikowe/" . realpath($usun)) na !file_exists(realpath(dirname(__FILE__) . "/../../../../wynikowe/" . $usun)) nic nie zmienia ![]() Ten post edytował tosiek 15.07.2009, 10:19:56 -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 6 Dołączył: 15.07.2009 Skąd: Śląsk->Ruda Śląska Ostrzeżenie: (0%) ![]() ![]() |
powiedz mi w jaki sposób przechowujesz nazwy plików? są one w bazie? bo jeśli tak to byś mógł rozdzielić nazwę na: nazwa_pliku -> rozszerzenie w liście plików do usunięcia dajesz tylko nazwy potem przy usuwaniu robisz selecta po nazwie i dorzucasz rozszerzenie: unlink("ścieżka_katalogu/".$nazwa_pliku.".".$rozszerzenie_pliku); - jak user wprowadzi nazwę, której nie ma w bazie to nie usunie pliku
![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nigdzie nie przechowuje listy plików, jest to mi zbędne
![]() użycia basename() wystarcza, przynajmniej tak mi się wydaje ;P
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.06.2025 - 04:54 |