Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Usuwanie plików z foldera
AuronDiel
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Witam wszystkich! Skrypt miał za zadanie wypisywać pliki znajdujące się w folderze i dawać opcje (button) dzięki której można przy okazji można usunąć ten plik.
Wszystko zapowiadało się łatwo i przyjemnie lecz po wciśnieciu klawiszu "Skasuj" plik dalej istnieje.
Proszę o pomoc!
  1. <?php
  2. $Katalog = 'sc/jp';
  3. if($_GET['usun_plik'] != "")
  4. {
  5. unlink('sc/jp/' . $_GET['usun_plik']);
  6. }
  7. $KatalogEdycja = opendir('sc/jp);
  8.  
  9. while($PlikZKatalogu = readdir($KatalogEdycja))
  10. {
  11. if($PlikZKatalogu != '.' && $PlikZKatalogu != '..' &&
  12. !is_dir('sc/jp/' .$PlikZKatalogu))
  13. {
  14. $pathinfo = pathinfo('sc/jp/'.$PlikZKatalogu);
  15. echo'<a href="sc/jp/'.$PlikZKatalogu.'"><font color="#c4c4c4" size="5">'.$pathinfo['filename'].'</font></a>
  16. <a href="index.php?usun_plik='.$PlikZKatalogu.'"><button>Skasuj</button></a><hr size="1" color="gray">';
  17. }
  18. }
  19. closedir($KatalogEdycja);
  20. ?>
Go to the top of the page
+Quote Post
redeemer
post
Post #2





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Brakuje apostrofa w linii 7.

Możliwe że proces serwera http nie ma praw do tego pliku, który chcesz usunąć. Powinieneś dostać warning w stylu
Kod
Warning: unlink(sc/jp/test.txt) [function.unlink]: Permission denied in ...

Masz włączone wyświetlanie błędów?

Do tego przydała by się walidacja $_GET['usun_plik']. Dla przykładu mógłbym wejść pod taki adres: index.php?usun_plik=../../index.php
Go to the top of the page
+Quote Post
AuronDiel
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


W .htaccess dopisałem php_flag display_errors on
Nic nie wypisało.
Dodałem też apostrof, dalej nie działa.
Go to the top of the page
+Quote Post
toaspzoo
post
Post #4





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


A katalog oraz pliki mają nadany odpowiedni chmod ? (IMG:style_emoticons/default/rolleyes.gif)
Go to the top of the page
+Quote Post
AuronDiel
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Nie ustawiałem chmod, ale wątpie by to było to.


Ten post edytował AuronDiel 19.07.2012, 07:15:40
Go to the top of the page
+Quote Post
Shido
post
Post #6





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Z trafieniem w katalog zawsze mam problemy.
Spróbuj dać taką lokalizację:
  1. unlink('./sc/jp/' . $_GET['usun_plik']);
Go to the top of the page
+Quote Post
redeemer
post
Post #7





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Zamiast unlink daj:
  1. $filename = './sc/jp/' . $_GET['usun_plik'];
  2. var_dump(posix_getpwuid(fileowner($filename)));
  3. var_dump(posix_getgrgid(filegroup($filename)));
  4. var_dump(substr(sprintf('%o', fileperms($filename)), -4));

I pokaż co zwraca.
Go to the top of the page
+Quote Post
AuronDiel
post
Post #8





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Cytat(Shido @ 19.07.2012, 08:56:20 ) *
Z trafieniem w katalog zawsze mam problemy.
Spróbuj dać taką lokalizację:
  1. unlink('./sc/jp/' . $_GET['usun_plik']);


Warning: unlink(./sc/jp/gghg.php) [function.unlink]: No such file or directory in /home/dawtuz/domains/y.pl/public_html/jp2.php on line 33


Cytat(redeemer @ 19.07.2012, 09:19:35 ) *
Zamiast unlink daj:
  1. $filename = './sc/jp/' . $_GET['usun_plik'];
  2. var_dump(posix_getpwuid(fileowner($filename)));
  3. var_dump(posix_getgrgid(filegroup($filename)));
  4. var_dump(substr(sprintf('%o', fileperms($filename)), -4));

I pokaż co zwraca.


Warning: fileowner() [function.fileowner]: stat failed for ./sc/jp/gghg.php in /home/dawtuz/domains/y.pl/public_html/jp2.php on line 34
array(7) { ["name"]=> string(4) "root" ["passwd"]=> string(1) "x" ["uid"]=> int(0) ["gid"]=> int(0) ["gecos"]=> string(4) "root" ["dir"]=> string(5) "/root" ["shell"]=> string(9) "/bin/bash" }
Warning: filegroup() [function.filegroup]: stat failed for ./sc/jp/gghg.php in /home/dawtuz/domains/y.pl/public_html/jp2.php on line 35
array(4) { ["name"]=> string(4) "root" ["passwd"]=> string(1) "x" ["members"]=> array(1) { [0]=> string(4) "root" } ["gid"]=> int(0) }
Warning: fileperms() [function.fileperms]: stat failed for ./sc/jp/gghg.php in /home/dawtuz/domains/y.pl/public_html/jp2.php on line 36
string(1) "0"


Takie błedy zwraca (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Pilsener
post
Post #9





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

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


Bo zacząć trzeba od tego, że jak chcesz coś usunąć, to trzeba sprawdzić:
1. Czy to coś istnieje
2. Czy mam odpowiednie prawa
3. Teraz spróbować usunąć
4. Sprawdzić informację zwrotną

Jak się nie chce sprawdzać, to potem ma się problemy tego typu. Bo trzeba zacząć od:
  1. if(file_exists('sc/jp/' . $_GET['usun_plik'])){
  2.  
  3. //robię dalej
  4.  
  5. }else{
  6.  
  7. echo 'nie znaleziono pliku '.'sc/jp/' . $_GET['usun_plik']);
  8.  
  9. }


Bo potem można wątpić, czy to uprawnienia, czy zła ściezka, czy brak pliku czy inny problem?

I tak przy okazji - nie boisz się, że Ci ktoś pousuwa nie to co trzeba?

Go to the top of the page
+Quote Post
toaspzoo
post
Post #10





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Wspominałem o chmodach, ale autor wolał to olać, sądząc, że przyczyna nie może być tak prosta (IMG:style_emoticons/default/cool.gif)

Ten post edytował toaspzoo 20.07.2012, 01:36:14
Go to the top of the page
+Quote Post
AuronDiel
post
Post #11





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


To w takim razie jaki mam ustawic chmod I ktorego pliku?
Go to the top of the page
+Quote Post
!*!
post
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(AuronDiel @ 20.07.2012, 11:45:34 ) *
To w takim razie jaki mam ustawic chmod I ktorego pliku?


chmod

Tego co chcesz usunąć (dla pliku/katalogu).
Go to the top of the page
+Quote Post
AuronDiel
post
Post #13





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


  1. <?php
  2. $Katalog = 'sc/jp';
  3. if($_GET['usun_plik'] != "")
  4. {
  5. unlink('sc/jp/' . $_GET['usun_plik']);
  6. {
  7. if(file_exists('sc/jp/' . $_GET['usun_plik']));
  8. }
  9. $KatalogEdycja = opendir('sc/jp');
  10.  
  11. while($PlikZKatalogu = readdir($KatalogEdycja))
  12. {
  13. if($PlikZKatalogu != '.' && $PlikZKatalogu != '..' &&
  14. !is_dir('sc/jp/'.$PlikZKatalogu))
  15. {
  16. chmod($PlikZKatalogu,0755);
  17. echo'<a href="sc/jp/'.$PlikZKatalogu.'"><font color="#c4c4c4" size="5">'.$PlikZKatalogu.'</font></a>
  18. <a href="jp2.php?usun_plik='.$PlikZKatalogu.'"><button>Skasuj</button></a><hr size="1" color="gray">';
  19.  
  20. }
  21. }
  22. }
  23. else{
  24. echo ' nie znaleziono pliku '.('sc/jp/' . $_GET['usun_plik']);
  25. }
  26. closedir($KatalogEdycja);
  27. ?>


A o to co wypluło:
nie znaleziono pliku sc/jp/
Warning: closedir(): supplied argument is not a valid Directory resource in /home/dawtuz/domains/y.pl/public_html/jp2.php on line 54
Go to the top of the page
+Quote Post
!*!
post
Post #14





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Jak nie znaleziono, to nie znaleziono. To chyba jasne. Podaj ścieżkę bezwzględną do katalogu.
Go to the top of the page
+Quote Post
toaspzoo
post
Post #15





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


czyli /sc/jp jeśli masz przeciętny hosting/serwer to jest to katalog główny www
Go to the top of the page
+Quote Post
darko
post
Post #16





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Fajnie i wydajnie wyglądałby Twój kod, gdybyś użył rekursywnego iteratora dla floderów: http://php.net/manual/en/class.recursivedi...oryiterator.php
zobacz zwłaszcza komentarze
Go to the top of the page
+Quote Post
AuronDiel
post
Post #17





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 2.06.2012

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


Cytat(darko @ 20.07.2012, 21:07:16 ) *
Fajnie i wydajnie wyglądałby Twój kod, gdybyś użył rekursywnego iteratora dla floderów: http://php.net/manual/en/class.recursivedi...oryiterator.php
zobacz zwłaszcza komentarze


Jak na razie to jest dla mnie czarna magia, może kiedyś. Powiem wam Panowie (IMG:style_emoticons/default/smile.gif) )
Napisałem jeszcze raz skrypt od nowa, troche pozmieniałem i... działa.. (IMG:style_emoticons/default/ohmy.gif)

By skrypt działał to trzeba być zalogowanym i skrypt dotyczy tylko plików znajdujących się w folderze "jp" a tam są same śmiecie.

Dziękuje wszystkim za pomoc! (IMG:style_emoticons/default/smile.gif)

Ten post edytował AuronDiel 20.07.2012, 22:58:51
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: 22.08.2025 - 11:42