[php] Sprawdzanie czy stronka istnieje

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
felix1988
Posty: 14
Rejestracja: pn lip 12, 2004 10:49 am
Kontakt:

[php] Sprawdzanie czy stronka istnieje

Post autor: felix1988 »

Potrzebuje skrypt sprawdzający czy strona istnieje!

Dokładniej np. czy strona www.forum.webinside.pl istnieje.
Prawdopodobnie potrzebna jest komunikacja z serverem na którym strona istnieje jak to zrobić!!!
Wojciech Kocjan
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: sob gru 14, 2002 10:51 am

Re: [php] Sprawdzanie czy stronka istnieje

Post autor: Wojciech Kocjan »

Mozesz pobawić się tym:

[php]<?php
function sprawdz_url($url)
{
if (!eregi("/", $url)) {
$url = $url . "/";
}

$adres[0] = substr($url, 0, strpos($url, "/"));
$adres[1] = substr($url, strpos($url, "/"));
$f = @fsockopen($adres[0], "80");
$odp = "";
if ($f) {
fputs($f, "HEAD " . $adres[1] . " HTTP/1.0\r\n\r\n");
while (!feof($f)) {
$odp .= fgets($f, 1024);
}
fclose($f);
}
if (eregi("HTTP/1.. 200", $odp)) { // jeśli naglowek zawiera 200
return true;
} else { // nadal blad
$host = str_replace("http://", "", $url);
$host = str_replace("www.", "", $host);
$host = split("/", $host);

$host = split("\.", $host[0]);
$ile = count($host);
$host = $host[$ile-2] . "." . $host[$ile-1];

if (@checkdnsrr($host, MX)) { // jesli sprawdzil dns'a i jest ok
return true;
} else { // jesli nadal stronki nie ma
$otworz = @fopen($url, "r");
if ($otworz) {
return true;
} else {
return false;
}
}
}
}
?>[/php]

Ostatnia czesc, laczaca sie przez fopen mozesz wywalic jak chcesz, bo a) niektore serwery zabraniaja fopen dla zewn. stron b) moze to spowolnic prace
Grzegorz Winiarski
Nowy
Nowy
Posty: 147
Rejestracja: pt lut 27, 2004 10:36 pm
Lokalizacja: Kraków

Re: [php] Sprawdzanie czy stronka istnieje

Post autor: Grzegorz Winiarski »

Albo poprostu:
[php]<?php
if(@fsockopen($url)) echo "Strona istnieje.";
else echo "Strona nie istnieje.";
?>[/php]
felix1988
Posty: 14
Rejestracja: pn lip 12, 2004 10:49 am
Kontakt:

Re: [php] Sprawdzanie czy stronka istnieje

Post autor: felix1988 »

Czy jest jakaś różnica między tymi dwoma sposobami oprucz długości?
Wojciech Kocjan
Zaczyna działać
Zaczyna działać
Posty: 427
Rejestracja: sob gru 14, 2002 10:51 am

Re: [php] Sprawdzanie czy stronka istnieje

Post autor: Wojciech Kocjan »

felix1988 pisze:Czy jest jakaś różnica między tymi dwoma sposobami oprucz długości?
Zalozmy ze sprawdzasz strone www.costam.friko.pl - gdy wpiszesz ja do przegladarki wyswietli Ci sie komunikat, ze ona nie istnieje. Jesli korzystasz ze sposobu Grzegorza, to funkcja zwroci Ci informacje ze strona jest ok. Skrypt zaprezentowany przeze mnie sprawdza czy serwer zwraca komunikat 200, jest wiec odporny na tego typu sytuacje. Poza tym moze sie zdarzyc, ze strona aktualnie ma awarie etc, wtedy skrypt sprawdza rekord serwera DNS. Jesli i tu okaze sie ze strona nie istnieje, moze ja takze otworzyc za pomoca fopen() - aczkolwiek tak jak pisalem w 1 poscie, to mozna wyrzucic, gdyz raczej wiele to nie da.
ODPOWIEDZ