Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Kopiowanie zawartości katalogu
Forum PHP.pl > Forum > PHP
Thymson
Tak jak w temacie - jest jakaś funkcja (albo jak taką napisać), która kopiowałaby zawartość katalogu z podanego adresu w polu ? Czyli user podaje adres np. http://www.domena.pl/fotki/, a skrypt przenosi zawartość tego katalogu na serwer (do wybranej lokalizacji)...
mike
Zacznijmy od tego czy masz dostęp do tego serwera?
Login, hasło, ... ?

Jeśli nie to zapomnij. Wyobrażasz sobie jakbym podał adres onet.pl i niech mi skrypt kopiuje.
Trochę wyobraźni na temat bezpieczeństwa tongue.gif
UDAT
Jeśli masz tam jakąś określoną stronę, np zwykłe wylistowanie Apache'a to możesz pobawić się preg'ami.
Jeśli nie to możesz napisać jakiegoś pająka ( tylko jak zauważył mike nie ma to większego sensu )
Thymson
Dokładniej to chodzi o wyciąganie fotek z tych katalogów... Potrzebne to do galerii...
mike
Masz dostęp?
Jeśli nie to powtarzam: nie da się.
No chyba, że znasz dokładnie nazwy wszystkich elementów znajdujących się w danym katalogu.

A poza tym od razu przyznaj (podejrzewam to na 99%), że chcesz kogoś okraść.
doseo
  1. <?php
  2.  
  3. function zarznijserwery( $url, $aktualny_folder = 'mirror' )
  4. {
  5. $file = file( $url );
  6. $html = implode( ' ', $file );
  7.  
  8. preg_match_all( '|<img src="(.*)" alt="[(.*)]"> <a href="(.*)">(.*)</a>|', $html, $wynik, PREG_SET_ORDER );
  9.  
  10. foreach ( $wynik as $v )
  11. {
  12. if ( $v[2] == 'DIR' && $v[4] != 'Parent Directory' )
  13. {
  14. mkdir( $aktualny_folder . '/' . substr( $v[3], 0, -) );
  15. print "Utworzono folder " . $aktualny_folder . '/' . substr( $v[3], 0, -1 ) . "<br />n";
  16. zarznijserwery( $url . $v[3], $aktualny_folder . '/' . substr( $v[3], 0, -) );
  17. }
  18. elseif ( $v[2] != 'DIR' )
  19. {
  20. copy( $url . $v[3], $aktualny_folder . '/' . $v[3] );
  21. print "Skopiowano " . $url . $v[3] . " do " . $aktualny_folder . '/' . $v[3] . "<br />n";
  22. }
  23. }
  24. }
  25.  
  26. zarznijserwery( 'http://localhost/test/' );
  27. ?>

Przy kopiowaniu nie uwzględnia daty utworzenia pliku.
Zamiast funkcji: file(), copy() należy użyć bardziej wyrafinowanych metod.
Na moim lokalhoscie działa:) Testowałem na tym samym folderze co mam skrypt i wyszło mi coś takiego:
Kod
mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror/mirror

chodziło by w nieskończoność gdyby nie zabezpieczenia windowsowe;)
Cytat(mike @ 28.06.2007, 20:57:56 ) *
A poza tym od razu przyznaj (podejrzewam to na 99%), że chcesz kogoś okraść.

Wszelkie materiały zamieszczone w tym poście mają charakter tylko i wyłącznie szkoleniowy. Autor nie bierze odpowiedzialności za wykorzystanie powyższych materiałów do celów niezgodnych z prawem Polskim.*

*To tak na wszelki wypadek jak by prokurator chciał mi dać współudział.
deirathe
To raczej nie zadziała tongue.gif
Thymson
Jasne... Nie chcę nikogo okradać, chodzi o to, że do galerii trudno wrzucać zdjęcia pojedynczo... Nie przeszkadzało by mi to, że podany katalog znajduje się na moim serwerze, do którego mam login hasło.
doseo
Cytat(deirathe @ 29.06.2007, 08:08:52 ) *
To raczej nie zadziała tongue.gif

Milo by było jak byś podał jakieś bliższe informacje.
deirathe
Po prostu tylko to sprawdziłem z ciekawości w kod się nie zagłębiałem, ale jak tylko wrócę z pracy do domku to posiedzę nad tym ;]
A i żeby nie było sprawdzałem to na swoich serverach próbowałem z jednego przekopiować do drugiego no ale nie poszło:P
cinekz
Jak chcesz wrzucać zdjęcia grupowo do galerii, to zrób czytanie z zipów. Ktoś na swoim komputerze przygotowuje archiwum z fotkami. Ty przygotowujesz panel, gdzie ten ktoś może sobie zuploadować te archiwum, a ty po stronie serwera phpem je rozpakowujesz. Tyle. Ja u siebie to tak rozwiązałem.
Thymson
Dzięki smile.gif
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.