Czy strona istnieje?

0

Witam,
mam pytanie, jak sprawdzić (np. za pomocą Curla czy sokcetów) czy dana strona istnieje czy też nie.
Tzn chodzi mi o to, czy pod adresem URL znajduje się aktualnie jakaś zawartość, czy po prostu nie znaleziono strony.

Pozdrawiam

0

Jeśli strona nie istnieje, to serwer zwróci kod błędu 404. Za pomocą socketów możesz bezpośrednio podłączyć się do zdalnego hosta i przy niewielkie wiedzy na temat protokołu HTTP w prosty sposób to sprawdzić. CURL natomiast AFAiR zwraca odpowiedni kod błędu.

0

Można również tak:

$content = file_get_contents('http://adres.pl/strona.html');
if (!$content) {
echo('Error');
} else {
echo('OK');
}
0
Demonical Monk napisał(a)

Można również tak:

$content = file_get_contents('http://adres.pl/strona.html');
if (!$content) {
echo('Error');
} else {
echo('OK');
}

a czy to nie zwróci czasem strony błędu np apache i prawie zawsze będzie OK ?
poza tym to pobierze całą stronę więc jeśli strona duża a łącze małe to to sprawdzenie będzie długo trwało

polecam fsockopen i wysłanie tylko jednej linii:
HEAD /strona.html
i odebranie tylko jednej linii z kodem (200 jeśli jej, 404 jeśli nie ma, ew. możesz obsłużyć też inne albo przyjąć że wszystkie poza 40x świadczą o poprawności [no chyba że obsłużysz przekierowania itp ...])

0

Następujący kod

<?php
$zawartosc = @file_get_contents("http://arcym111.shost.pl/");
if($zawartosc)
echo "OK";
else
echo "Error";
?>

funkcjonował dobrze, warningi z funkcji file_get_contents były następujące

failed to open stream: php_network_getaddresses: getaddrinfo failed: hostname nor servname provided

choć jeśli na stronie np. jest przekierowanie 301 albo 302 to tym sposobem nie wykryjesz tego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1