Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] sprawdzanie czy strona istnieje
Forum PHP.pl > Forum > Przedszkole
TakiJakis
  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.
venomz
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.
mike
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.
TakiJakis
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
venomz
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.
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.