Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak pobrać zawartość strony
Forum PHP.pl > Forum > PHP
Kokocky
Jak mogę pobrać kod HTML jakiejś strony przez PHP, skoro serwer ma wyłączone funkcje file_get_contetns i fopen() (cURLa nie sprawdzałem, ale najprawdopodobnie też)?
konrados
No to sprawdź curla, bo nie masz powodów by sądzić, że jest wyłączony.

A tu masz przykładową funkcję (ściąga plik $remote i zapisuje do pliku $local):

  1. //func. dla uploadowania z url'a
  2. function curl_download($remote, $local) {
  3. $cp = curl_init($remote);
  4. $fp = fopen($local, "wb");
  5. if(!$fp){
  6. echo "Couldn't open target file</br>";
  7. }
  8. curl_setopt($cp, CURLOPT_FILE, $fp);
  9. curl_setopt($cp, CURLOPT_HEADER, 0);
  10. curl_exec($cp);
  11. //echo "<br>Error is : ".curl_error ( $cp);
  12. curl_close($cp);
  13. fclose($fp);
  14. exit();
  15. }
Crozin
Jakoś mi się nie chce wierzyć by file_get_contents()/fopen() były zablokowane. Zapewne zablokowany jest tylko dostęp do protokołów HTTP(s)/FTP(s), a to zapewne wiąże się z ogólną blokadą portu #80. curl, fsockopen, fopen, skorzystanie z zewnętrzonego programu - to są najpopularniejsze metody.
marrrecki
czasami file_get_contents() blokowane jest "ze względów bezpieczeństwa" pod kątem linkowania do adresów http://. fopen() potrafią nawet wyłączyć.
phpion
Cytat(marrrecki @ 16.11.2010, 08:19:08 ) *
czasami file_get_contents() blokowane jest "ze względów bezpieczeństwa" pod kątem linkowania do adresów http://. fopen() potrafią nawet wyłączyć.

file_get_contents nie ma tu nic do rzeczy - chodzi o wyłączenie dyrektywy allow_url_fopen w ustawieniach PHP.
marrrecki
Masz rację. Zapomniałem jak się ta dyrektywa nazywa, i napisałem jak chłopu na miedzy smile.gif. Dzięki za przypomnienie.
thek
Dokładnie wczoraj miałem identyczny problem po przeniesieniu serwisu na inny serwer. Okazało się, że dyrektywa allow_url_fopen jest ustawiona na false i część serwisu zwyczajnie się nie wyświetla. Na początku yślałem, że tylko file_get_contents jest bloknięty, ale gdy fopen się wysypało to właśnie curl mnie uratował. Jeśli jednak chcesz nie tyle zapisać do pliku co jako zmienną do ewentualnej obróbki tworzyć to zrezygnuj z CURLOPT_FILE, a postaw na CURLOPT_RETURNTRANSFER i dla pewności CURLOPT_FOLLOWLOCATION. Zresztą zobacz sobie parametry dla curla w curl_setopt
Kokocky
Niestety curl nie działa (niema funkcji curl_init() na serwerze). Jest jakiś inny sposób?
konrados
Zmień usługodawcęsmile.gif Albo się z nim skontaktuj.
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.