Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Usuwanie pliku, Problem z usuwaniem pliku
felixk
post
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


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\">
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$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
Go to the top of the page
+Quote Post
felixk
post
Post #3





Grupa: Zarejestrowani
Postów: 90
Pomógł: 1
Dołączył: 31.01.2009
Skąd: Ostrołęka

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


  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
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


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ć...

Ten post edytował Pilsener 13.04.2012, 21:39:14
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 26.08.2025 - 01:20