Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] sprawdzanie czy strona istnieje, wytlumaczenie
TakiJakis
post 26.10.2006, 16:55:32
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 7.11.2004

Ostrzeżenie: (40%)
XX---


  1. <?php
  2. $adres="http://www.costam.pl";
  3. $adres=parse_url($adres); 
  4. $odp=""; 
  5. $f=@fsockopen($adres['host'], $adres['port'] > 0 ? $adres['port'] : "80", $errno, $errstr, 1);
  6. if ($f) { 
  7. fputs($f, "GET " . $adres['path'] . " HTTP/1.0rnrn"); 
  8. while (!feof($f)) $odp .= fgets($f,1024); 
  9. fclose($f); 
  10. } 
  11. if (!preg_match("#HTTP/1.. 200#si",$odp)) { 
  12.  return;
  13. } else return 1;
  14. ?>


Może mi ktoś wytłumaczyć na jakiej zasadzie działa ten kod, który sprawdza czy dana strona istnieje? Chodzi mi głównie o linijki (co to jest to HTTP/sda12312?):

  1. <?php
  2. fputs($f, "GET " . $adres['path'] . " HTTP/1.0rnrn"); 
  3. [...]
  4. if (!preg_match("#HTTP/1.. 200#si",$odp)) {
  5. ?>


Prosze o przystepne tlumaczenie i nie odsylanie do jakichs niezrozumialych stron.
Pozdrawiam.

Ten post edytował TakiJakis 26.10.2006, 19:38:03
Go to the top of the page
+Quote Post
venomz
post 26.10.2006, 17:24:24
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 18.09.2006

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


Funkcja fsockopen probuje nawiazac polaczenie z serwerem ktorgo adres jest podany jest jako parametr.
Jezeli serwer jest wylaczony funkcja zwroci false. W przeciwnym wypadku zmienna $f jest ustawiona.

Nastepnie wyslanie do serwera zapytania o konkretna strone i sprawdzenie wyrazeniem regularnym czy odpowiedz zawiera #HTTP/1.. 200 - czyli strona istnieje.
Chociaz nie jestem do konca pewny.

Ten post edytował venomz 26.10.2006, 20:34:04
Go to the top of the page
+Quote Post
mike
post 26.10.2006, 18:03:49
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


1. Proszę poprawić temat wątku.
Nie jest zgodny z zasadami panującymi na forum Przedszkole.

2. Proszę poprawić temat wątku, nie tylko pod kątem powyższego ale i pod kątem przekazu. Przeczytaj sobie Regulamin i dostosuj się do wskazówek dotyczących formułowania tematów. Samo http... jako temat nic nie wnosi.
Go to the top of the page
+Quote Post
TakiJakis
post 26.10.2006, 19:41:56
Post #4





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 7.11.2004

Ostrzeżenie: (40%)
XX---


Cytat(venomz @ 26.10.2006, 16:24:24 ) *
Funkcja fsockopen probuje nawiazac polaczenie z serwerem ktorgo adres jest podany jest jako parametr.
Jezeli serwer jest wylaczony funkcja zwroci false. W przeciwnym wypadku zmienna $f jest ustawiona.

Nastepnie wyslanie do serwera zapytania o konkretna strone i sprawdzenie wyrazeniem regularnym czy odpowiedz zawiera #HTTP/1.. 200 - czyli strona nie istnieje.
Chociaz nie jestem do konca pewny.

Niestety wiele mi to tlumaczenie nie mowi. Moze ktos wytlumaczyc od momenty "fputs", ale DOKLADNIE?
Pozdrawiam
Go to the top of the page
+Quote Post
venomz
post 26.10.2006, 22:29:29
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 18.09.2006

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


No skoro jestes zbyt leniwy zeby skorzystac z google/troche pomyslec wyjasniam dokladniej.
Jesli polaczenie z serwerem jest nawiazane
  1. <?php
  2. if ($f)
  3. ?>

na adres serwera zostaje wyslane żądanie:

  1. <?php
  2. fputs($f, "GET " . $adres['path'] . " HTTP/1.0rn");
  3. ?>


gdzie "GET + adres dokumentu + HTTP/1.0\r\n" - prosba o zwrocenie dokumentu o podanym adresie.

Serwer wysyla odpowiedz, ktora zostaje odebrana paczkami po 1024 bajty i umieszczama w zmiennej $odp

  1. <?php
  2. while (!feof($f)) $odp .= fgets($f,1024);
  3. ?>


za pomoca wyrazenia regularnego:

  1. <?php
  2. if (!preg_match("#HTTP/1.. 200#si",$odp))
  3. ?>


sprawdzamy odpowiedz w poszukiwaniu ciagu "HTTP/1.. 200". Oznacza on ze zadany dokument istnieje (wczesniej sie pomylilem) i zostanie on przeslany. Ciag ten zostanie dolaczony do naglowka strony.
Inna mozliwa odpowiedz serwera moze np. zawierac ciąg "HTTP/1.1 404" oznaczajacy ze strona nie znajduje sie na serwerze.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 06:13