Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Usuwanie pliku
Forum PHP.pl > Forum > PHP
felixk
Witam, jak w temacie. Napisałem skrypt dający możliwość usuwania plików z tym, że pliki nie chcą się usuwać. Zawszelkie pomysły będę wdzięczny

  1. $akcja = $_GET['akcja'];
  2. if ($akcja == "usun_plik")
  3. {
  4.  
  5. $dir="data/files/";
  6.  
  7.  
  8. if (is_dir($dir)) {
  9. if ($dh = opendir($dir)) {
  10. while (($file = readdir($dh)) !== false) {
  11. if(($file_name!=".")&&($file_name!="..")) {
  12.  
  13. $file_path = $dir.$file_name;
  14. $file_tab = array ($file_name, filesize($file_path)); //tablica z informacjami o jednym pliku [0] -> nazwa; [1] -> rozmiar
  15. array_push($files_tab, $file_tab); //dołączenie tablicy informacji o jednym pliku do tablicy wszystkich plików
  16. }
  17. }
  18. closedir($dh);
  19. }
  20. }
  21.  
  22. $nazwa = $files_tab[$i][0];
  23.  
  24. $plik = $_GET['plik'];
  25. if($plik == $nazwa)
  26. {
  27. unlink($nazwa);
  28. }
  29.  
  30. }


  1. <input onclick=\"window.location.href='http://$adres/listowanie.php?akcja=usun_plik&amp;plik=$nazwa'\" type=\"button\" value=\"Usuń plik\">
nospor
$nazwa = $files_tab[$i][0];
Co to niby ma być? Nigdzie nie masz zmiennej $i ale nie przeszkadza ci to z niej korzystać....
Debuguj swój skrypt, sprawdzaj co zawierają zmiennej na danym etapie a nie napiszesz coś w pół strzelone w pól może troche przemyślane i dalej nic...
Tu masz pare wskazowek, zastosuj się do nich
Temat: Jak poprawnie zada pytanie
felixk
  1. $akcja = $_GET['akcja'];
  2. if ($akcja == "usun_plik")
  3. {
  4.  
  5. $dir="data/files/";
  6.  
  7.  
  8. if (is_dir($dir)) {
  9. if ($dh = opendir($dir)) {
  10. while (($file = readdir($dh)) !== false) {
  11. if(($file_name!=".")&&($file_name!="..")) {
  12.  
  13. $file_path = $dir.$file_name;
  14. $file_tab = array ($file_name, filesize($file_path)); //tablica z informacjami o jednym pliku [0] -> nazwa; [1] -> rozmiar
  15. array_push($files_tab, $file_tab); //dołączenie tablicy informacji o jednym pliku do tablicy wszystkich plików
  16. }
  17. }
  18. closedir($dh);
  19. }
  20. }
  21. for ($i=0; $i<count($files_tab); $i++) {
  22. $nazwa = $files_tab[$i][0];
  23. echo $nazwa;
  24. }
  25. $plik = $_GET['plik'];
  26. if($plik == $nazwa)
  27. {
  28. unlink($nazwa);
  29. }
  30.  
  31. }


w zmiennej $nazwa są nazwy plików, które są na serwerze natomiast nie działa usuwanie
nospor
Cytat
w zmiennej $nazwa są nazwy plików
Nie, w zmiennej $nazwa po pętli jest ostatni plik. I tyle. Nic więcej.

Pozatym readdir zwraca ci samą nazwę pliku, a ty chyba ten plik masz w katalogu data/files/ więc i do unlunk wypadałoby podać pełną sciezke do pliku a nie tylko jego nazwe.
Pilsener
1. Daj echo $nazwa i echo $plik przed unlink i zobacz, co chcesz usunąć - czy to takie trudne?
2. Zanim cokolwiek spróbuje się usunąć to warto sprawdzić, czy to coś istnieje i mamy odpowiednie uprawnienia, by to usunąć.
3. Ten warunek pewnie nigdy nie będzie prawdziwy:
  1. $plik = $_GET['plik'];
  2. if($plik == $nazwa)
- bo nazwy w url są kodowane

I czemu po prostu nie użyć zmienej GET jako klucza do usunięcia pliku z tablicy?
  1. unlink($tablica[$klucz]);


Zamiast sprawdzać po kolei w pętli? Bo zakładam, że o to ma tu chodzić? Ciężko się z kodu zorientować...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.