Strona 1 z 1

[php] Sprawdzanie czy stronka istnieje

: pt lip 16, 2004 9:49 am
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ć!!!

Re: [php] Sprawdzanie czy stronka istnieje

: pt lip 16, 2004 10:09 am
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

Re: [php] Sprawdzanie czy stronka istnieje

: pt lip 16, 2004 7:02 pm
autor: Grzegorz Winiarski
Albo poprostu:
[php]<?php
if(@fsockopen($url)) echo "Strona istnieje.";
else echo "Strona nie istnieje.";
?>[/php]

Re: [php] Sprawdzanie czy stronka istnieje

: sob lip 17, 2004 8:24 am
autor: felix1988
Czy jest jakaś różnica między tymi dwoma sposobami oprucz długości?

Re: [php] Sprawdzanie czy stronka istnieje

: sob lip 17, 2004 10:11 am
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.