Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kopia strony do pliku html
Forum PHP.pl > Forum > PHP
szmerak
Czy jest jakaś możliwość w PHP aby skrypt zrobił dokładną kopie html wpisanej strony i zapisał do pliku na serwerze?

Znalazłem taki skrypcik
  1. <?php
  2. $ip = $_SERVER["REMOTE_ADDR"];
  3.  
  4. function GetPage($url, $ip, $timeout = 5)
  5. {
  6. $result = '';
  7. $url = parse_url($url);
  8.  
  9. if(!isset($url['port'])) $url['port'] = 80;
  10. $port = $url['port'];
  11. if(strlen($url['path']) == 0) $url['path'] = '/';
  12.  
  13. if ($fp = @fsockopen($url['host'], $port, $errno, $errstr, $timeout))
  14. {
  15. fputs($fp,
  16. "GET " . $url['path'] . " HTTP/1.0r\n" .
  17. "Host: " . $url['host'] . ($port != 80 ? ':' . $port : '') . "r\n" .
  18. "Accept: text/html; */*r\n" .
  19. "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)r\n" .
  20. "X_Forwarded_For: " . $ip . "r\n" .
  21. "Via: " . $ip . "r\n" .
  22. "Client-IP: " . $ip . "r\n" .
  23. "Connection: closer\nr\nr\n");
  24.  
  25. while (!feof($fp) && ($buf = fread($fp, 8192))) $result .= $buf;
  26.  
  27. fclose($fp);
  28. return $result;
  29. } else
  30. echo "Błąd $errno: $errstr !";
  31.  
  32. return false;
  33. }
  34.  
  35.  
  36.  
  37. $zzz = GetPage('http://www.szmerak.pl', '83.9.251.98');
  38. $plik=fopen("katalogi/strona2.html", "w+");
  39. fwrite($plik, $zzz);
  40. fclose($plik);
  41. ?>

Ale zapisuje on do pliku
Bad Request

Your browser sent a request that this server could not understand.
Request header field is missing ':' separator.
Smertius
Przecież masz jasno napisane dlaczego otrzymujesz komunikat "bad request"
szmerak
Nie znam się na Curlu ;/ Napisałem że znalazłem ten skrypcik nawet nie wiem która funkcja nawala. Dlatego też tutaj napisałem.
Proszę o jakieś wskazówki
strife
Cytat(szmerak @ 13.12.2010, 07:09:09 ) *
Nie znam się na Curlu ;/ Napisałem że znalazłem ten skrypcik nawet nie wiem która funkcja nawala. Dlatego też tutaj napisałem.
Proszę o jakieś wskazówki

Wskazówki masz umieszczone w błędzie który dostałeś, założę się że nawet nie szukałeś rozwiązania via google.

Nie wiem po co Ci CURL i co dokładnie chcesz zapisywać, ale może wystarczy Ci taka konstrukcja (o ile serwer Ci na to pozwoli):

  1. file_put_contents('webpage.html', file_get_contents('http://onet.pl'));

szmerak
strife dzięki ci wielkie właśnie o to mi chodziło!!!!
Pozdrawiam.

P.S da się jeszcze zrobić aby pobierał razem pliki css? + obrazki?
strife
Cytat(szmerak @ 13.12.2010, 08:56:52 ) *
P.S da się jeszcze zrobić aby pobierał razem pliki css? + obrazki?

Jasne, że się da, ale nie jest to prosta sprawa. Pobrany dokument musisz odpowiednio przeparsować, aby pobierał również zdjęcia/css/javascripty co wydaje się wymyślaniem koła od nowa skoro mamy taki soft jak wget.

Uprzedzam pytanie ... Tak, można wykonywać polecenia shell'a za pomocą php (szukaj).
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.