Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Podgląd i usuwanie plików z katalogu
Tuomi
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 12.12.2012

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


Witam.
Prosiłbym o pomoc w napisaniu kodu, który:
1. wyświetlałby zawartość katalogu,
2. przy każdej nazwie pliku byłby checkbox,
3. pod nazwami przycisk do kasowania zaznaczonego pliku.
Udało mi się zrobić pierwsze dwa punkty, ale nie działa mi opcja usuwania pliku.
Co zrobiłem źle?

Plik wyświetlający zawartość katalogu z checkboxami [pliki.php]:
  1. <?
  2. //wyswietlanie plikow
  3. $directory="okladka";
  4. $dir=opendir($directory);
  5. $file_list="<ul>";
  6. while($file_name=readdir($dir))
  7. {
  8. if(($file_name!=".")&&($file_name!=".."))
  9. {
  10. $file_list.="<li><input type=checkbox name=plik value=$file_name> $file_name</li>";
  11. }
  12. }
  13. $file_list.="</ul>";
  14. closedir($dir);
  15. echo "<form action=usun-plik.php method=post>$file_list <input type=submit name=ok value=Kasuj />";
  16. ?>


Plik odpowiadający za usuwanie zaznaczonego pliku [usun-plik.php]:
  1. <?php
  2. include 'pliki.php';
  3. $nazwa_pliku = $_POST['plik'];
  4. unlink($nazwa_pliku);
  5. echo 'Plik pomyślnie usunięty. <a href=pliki.php>Powrót</a>';
  6. ?>

Jak zrobić, żeby taki formularz działał?
Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Wazniak96
post
Post #2





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


Dajesz złą ścieżkę usuwania pliku. Czytasz pliki z folderu "okladka", a próbujesz usunąć z bieżącego. smile.gif
Go to the top of the page
+Quote Post
d3ut3r
post
Post #3





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


Moim zdaniem powinieneś w ogóle unikać takich konstrukcji, co jeżeli w $_POST będzie na przykład:

../../plik.php

przy takim kodzie zostawiasz otwartą furtkę do usunięcia wszystkiego co jest w zasięgu skryptu.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


PHP daje ci takie fajne sposoby a ty robisz to brutalnym młotkiem:
http://php.net/manual/en/class.directoryiterator.php
http://php.net/manual/en/class.filesystemiterator.php
Możesz nawet http://php.net/manual/en/class.globiterator.php do szybkiego odfiltrowania.


--------------------
Go to the top of the page
+Quote Post
Tuomi
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 12.12.2012

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


Tylko trzeba te "fajne przykłady" rozumiećbiggrin.gif Ok. Zrobię to na zasadzie ramek tzn 3 pliki: pliki.php, all.php, del.php. W plik.php będą iframe'y do all.php i del.php, w all.php będzie wyświetlanie zawartości folderu a del.php bedzie odpowiadał za usunięcie (poprzez wpisanie nazwy w polu input). Temat można zamknąćwink.gif

Udało się bez ramek zrobićwink.gif
pliki-all.php
  1. <form action="pliki-del.php?del=1" method="GET">
  2. <?
  3. $katalog = '../okladka';
  4. $dir = opendir($katalog);
  5. while(false !== ($file = readdir($dir)))
  6. if($file != '.' && $file != '..')
  7. {
  8. echo '<input type="checkbox" name="file" value="'. $file . '" /> '. $file . '<br />';
  9. }
  10. closedir($dir);
  11. ?>
  12. <br><input type="submit" value="Kasuj" />!<br>
  13. </form>

pliki-del.php
  1. <?
  2. $del=$_GET['del'];
  3. $file = $_GET['file'];
  4. $katalog = '../okladka';
  5. if (unlink($katalog .'/'. $file))
  6. {
  7. echo "Plik zostal pomyslnie usuniety. <a href=pliki-all.php>Wroc</a>.";
  8. }
  9. ?>

Powyższe pliki są umieszczone w katalogu pliki, zaś katalog z plikami (okladka) jest umieszczony w katalogu głównym
Skrypt może nie profesjonalny, ale ważne, że działa:)
Jeszcze takie małe pytanie. Co trzeba zmienić/wstawić, żeby w przypadku putego katalogu wyświetlało: "Brak plików do usunięcia."
Próbowałem użyć
  1. if (!empty($dir))
  2. {
  3. echo '<br>Brak plików do usunięcia!<br>';
  4. }

ale wtedy echo jest wyświetlane niezależnie od tego czy katalog jest pusty czy nie. Z góry dzięki za pomoc;)

Ten post edytował Tuomi 14.12.2012, 17:48:40
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 Aktualny czas: 21.08.2025 - 08:28