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ć!!!
[php] Sprawdzanie czy stronka istnieje
-
Wojciech Kocjan
- Zaczyna działać

- Posty: 427
- Rejestracja: sob gru 14, 2002 10:51 am
Re: [php] Sprawdzanie czy stronka istnieje
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
[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

- Posty: 147
- Rejestracja: pt lut 27, 2004 10:36 pm
- Lokalizacja: Kraków
Re: [php] Sprawdzanie czy stronka istnieje
Albo poprostu:
[php]<?php
if(@fsockopen($url)) echo "Strona istnieje.";
else echo "Strona nie istnieje.";
?>[/php]
[php]<?php
if(@fsockopen($url)) echo "Strona istnieje.";
else echo "Strona nie istnieje.";
?>[/php]
Re: [php] Sprawdzanie czy stronka istnieje
Czy jest jakaś różnica między tymi dwoma sposobami oprucz długości?
-
Wojciech Kocjan
- Zaczyna działać

- Posty: 427
- Rejestracja: sob gru 14, 2002 10:51 am
Re: [php] Sprawdzanie czy stronka istnieje
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.felix1988 pisze:Czy jest jakaś różnica między tymi dwoma sposobami oprucz długości?