ďťż

[PHP] Źródło strony.

       

Podstrony


telcocafe

Czy można jakimś sposobem podejrzeć źródło strony przy pomocy PHP? Chodzi mi o to źródło, które można podejrzeć klikając w przeglądarce prawym przyciskiem myszy i "Pokaz zrodlo strony". Będę wdzięczny za każdą pomoc.



"Czy można jakimś sposobem podejrzeć źródło strony przy pomocy PHP?"
fopen, fsockopen, file_get_contents ?

Oczywiście nie pobierzesz tym sposobem kodu PHP, tylko HTML wygenerowany przez stronę.

No właśnie chodzi mi o HTML (ew. Javascript).

Co do tych funkcji to jeszcze nie testowałem, ale można sobie zwykłym fopen() pobrać źródło strony?


ale można sobie zwykłym fopen() pobrać źródło strony? Tak.
http://pl.php.net/ma...ction.fopen.php

fopen — Otwiera plik lub URL
np.
<?php $uchwyt = fopen("http://www.przykladowy.com/", "rb"); $tresc = ''; while (!feof($uchwyt)) { $tresc .= fread($uchwyt, 8192); } fclose($uchwyt); ?>
lub
<?php // dla PHP 5 i nowszych $uchwyt = fopen("http://www.example.com/", "rb"); $tresc = stream_get_contents($uchwyt); fclose($uchwyt); ?>
(przykłady z manuala http://pl.php.net/ma...tion.fread.php)



kutar:

$tresc = file_get_contents('http://example.com');

Kutar, niestety Twoje przykłady mi nie działają. Co może być nie tak?


Kutar, niestety Twoje przykłady mi nie działają. Co może być nie tak?
Napisałem wyżej jak zrobić swoją drogą...


Kutar, niestety Twoje przykłady mi nie działają. Co może być nie tak?
Tak może być, gdy masz dyrektywę bodaj allow_url_fopen ustawioną na Off w pliku php.ini
Dla pewności sprawdź jeszcze to, co napisał Coldpeer - file_get_contents(), chociaż nie sądzę, by to działało:

Jeśli włączona jest dyrektywa konfiguracyjna fopen wrappers, możliwe jest podanie jako nazwy pliku adresu URL. Zobacz opis funkcji fopen() aby dowiedzieć się jak przekazać nazwę pliku, oraz fopen wrappers aby uzyskać listę obsługiwanych protokołów.


Dla pewności sprawdź jeszcze to, co napisał Coldpeer - file_get_contents(), chociaż nie sądzę, by to działało:
Ale zaraz. On chce pobrać źródło jakiegoś pliku (tudzież strony). To co za problem użyć file_get_contents, zamiast pieprzyć sie z fopen i innymi?

Bo bardziej fopen służy do otwierania URL-i, niż file_get_contents :P Więcej na ten temat napisali w manualu :P
Jednak wg mnie jeśli nie może otworzyć URLa już przez fopen, to tym bardziej nie otworzy przez file_get_contents...
Ale niech lepiej sprawdzi już Capellini, ja nie mam zamiaru psuć sobie konfiguracji, żeby sprawdzić błędy :P
Użytkownik pbnan edytował ten post 27 czerwiec 2007, 13:34

Bo bardziej fopen służy do otwierania URL-i, niż file_get_contents :P Więcej na ten temat napisali w manualu :P
Przepraszam, w którym miejscu, bo nie mogłem się doszukać... Znalazłem jedynie, że file_get_contents() jest zalecaną funkcją do odczytywania pliku z lokalnego fs do stringa, ale zaleceń odnośnie ściągania plików po urlach niestety nigdzie nie ma...

Jednak wg mnie jeśli nie może otworzyć URLa już przez fopen, to tym bardziej nie otworzy przez file_get_contents...
"Nie może" to złe wyrażenie, powinno raczej brzmieć "nie potrafi".

Hmm ale jak to nie może, jak może?

// edit: hmm źle się wczytałem... nie zauważyłem "jeśli i tak nie otworzy urla przez fopen"
Użytkownik Coldpeer edytował ten post 27 czerwiec 2007, 14:35

co za problem użyć file_get_contents, zamiast pieprzyć sie z fopen i innymi?
Po to, że pytał się czy za pomocą zwykłego fopen można, dlatego pokazałem przykład

ale można sobie zwykłym fopen() pobrać źródło strony?


Kutar, niestety Twoje przykłady mi nie działają. Co może być nie tak?
No a wywalają się jakieś błędy?

W oby dwóch przypadkach jest taki błąd:


Warning: file_get_contents(http://example.com) [function.file-get-contents]: failed to open stream: Connection refused


"Nie może" to złe wyrażenie, powinno raczej brzmieć "nie potrafi".

A nauczysz mnie?
Użytkownik Capellini edytował ten post 27 czerwiec 2007, 15:35
@dodek: drugie zdanie z cytatu. Liczyłem: dla fopen są przynajmniej trzy akapity o otwieraniu z url, dla file_get_contents o ile dobrze widzę zaledwie jeden...

@Capellini: a może podałbyś dobry adres, a nie przykładowy? :blink:

pbnan, podałem dobry, tylko jak skopiowałem kod to zmieniłem na example, bo nie chce pokazywać jaka to strona. Dlaczego wszyscy na tym forum mają mnie za debila? ;)
Użytkownik Capellini edytował ten post 27 czerwiec 2007, 19:17

Dlaczego wszyscy na tym forum mają mnie za debila? ;)
Bo masz problem z fopen ;P

Widać nie da się zrobić: connection refused, czyli połączenie odmówione. :/

Na Twoim miejscu poćwiczyłbym jeszcze tak:
a. sprawdziłbym, czy poprawnie pobiera źródła innych stron (Google?);
b. cURL :)
$curl = curl_init('http://www.google.pl/'); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.4) Gecko/20061201 Firefox/2.0.0.4 (Ubuntu-feisty)'); curl_exec($curl); curl_close($curl);


@dodek: drugie zdanie z cytatu. Liczyłem: dla fopen są przynajmniej trzy akapity o otwieraniu z url, dla file_get_contents o ile dobrze widzę zaledwie jeden...
Więc jeżeli o jednej funkcji jest mniej, a o drugiej więcej, to znaczy, że ta druga jest lepsza? Haha.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.