Skocz do zawartości

gethostbyname


Mar

Rekomendowane odpowiedzi

Witam,

Do pobierania adresu IP uzywam funkcji "gethostbyname" tak jak poniżej:

$adresIP = substr($www,7,50);
$new_ip = gethostbyname($adresIP);

.. no i jest problem, gdy sprawdzany adres nie działa,

skrypt się wiesza, ma ktoś jakiś pomysł,

aby zabezpieczyć się przed niedziałającym adresem?

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

$adresIP = substr($www,7,50);
$new_ip = gethostbyname($adresIP);

wstaw warunki dla $www przed gethostbyname($adresIP), działa.

mozesz jeszcze zaimplementować wlasny mechanizm obsługi błedów.

"Dopiero gdy wolna wola znowu zaskoczyła, przerwali bieg po torze przeszkód ich własnej konstrukcji."

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, ale jak mam rozumieć, czy adres działa, czy nie działa?

Tz, jak sprawdzić czy np. adres https://www.adres.pl działa bądź nie,

jaką funkcją to sprawdzić, jak to bedę wiedział to będę miał FALSE lub TRUE

i wtedy będę mógł zminną $new_ip objąć warunkiem IF.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, ale jak mam rozumieć, czy adres działa, czy nie działa?

Tz, jak sprawdzić czy np. adres https://www.adres.pl działa bądź nie,

jaką funkcją to sprawdzić, jak to bedę wiedział to będę miał FALSE lub TRUE

i wtedy będę mógł zminną $new_ip objąć warunkiem IF.

Mar.


$adresIP = substr($www,7,50);
$new_ip = gethostbyname($adresIP) or die ("Błąd");

Rozwiązanie się okazało prostsze niż myślałem :) (jak zwykle :) ). Sprawdzałem działa :).

Tak OT. to przeczytałem na jakimś forum ( przed chwilą ) że to błąd IE :D

"Dopiero gdy wolna wola znowu zaskoczyła, przerwali bieg po torze przeszkód ich własnej konstrukcji."

Odnośnik do komentarza
Udostępnij na innych stronach

Rozwiązanie się okazało prostsze niż myślałem smile.gif (jak zwykle smile.gif ). Sprawdzałem działa smile.gif.

Tak OT. to przeczytałem na jakimś forum ( przed chwilą ) że to błąd IE biggrin.gif

Najprostrze rozwiazania najtrudniej znaleźć.... ale niestety nadal nic z tego, przy próbie pobrania IP z nie działającego adresu, skrypt długu "myśli" by w końcu zwrócić IP w postaci błednego adresu. I chyba nie jest to błąd IE bo korzystam z FF :D

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

... niestety nadal nic z tego, przy próbie pobrania IP z nie działającego adresu, skrypt długu "myśli" by w końcu zwrócić IP w postaci błednego adresu.

Zwraca "Błąd" jeśli brak możliwości translacji nazwy domenowej na adres IP. Czyli masz to co chciałeś.

Sprawdzałem ten kawałek kodu i u mnie jest ok, jak byś cos więcej podesłał.

p.s wstaw @ to nie będzie komunikatu systemowego.

$new_ip = @gethostbyname($adresIP) or die ("Błąd");

"Dopiero gdy wolna wola znowu zaskoczyła, przerwali bieg po torze przeszkód ich własnej konstrukcji."

Odnośnik do komentarza
Udostępnij na innych stronach

Nie rozumiesz mnie, skryp nie wyświetla żadnego błędu, po prostu długo wczytuje się gdy adres nie działa, a nie ma nic więcej, odnośnie tego kodu, jest tylko pobierany adres www z bazy danych.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Nie rozumiesz mnie, skryp nie wyświetla żadnego błędu, po prostu długo wczytuje się gdy adres nie działa, a nie ma nic więcej, odnośnie tego kodu, jest tylko pobierany adres www z bazy danych.

Mar.

IMHO to nie wina php tylko serwera DNS - jest zawolny.

$url='https://www.blabla.pl/';

$url=parse_url($url);

$ip = gethostbyname($url['host']);

musi dzialac

a jeżeli masz wolny serwer dns to sprawdzenie kilkuset adresow zajmie wieeeeele czasu.

Odnośnik do komentarza
Udostępnij na innych stronach

MMP mozesz rozwinąć swoją myśl?

viras niestey dalej nic, używam tego do edycji katalogow, czyli tylko jeden adres edytuję w danym momencie, i to jest tak, mam zgłoszone niedziałające katalogi, daję edytuj.. i strona się wczytuje wczytuje itd.

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Z manuala:

<?php
$fp = fsockopen("www.example.com", 80);
if (!$fp) {
  echo "Unable to open\n";
} else {

  fwrite($fp, "GET / HTTP/1.0\r\n\r\n");
  stream_set_timeout($fp, 2);
  $res = fread($fp, 2000);

  $info = stream_get_meta_data($fp);
  fclose($fp);

  if ($info['timed_out']) {
   echo 'Connection timed out!';
  } else {
   echo $res;
  }

}
?> 

Chodzi o funkcje: stream_set_timeout

stopka usunieta z wpoodu wirusa na stronie docelowej

Odnośnik do komentarza
Udostępnij na innych stronach

Kórcze, nadal nic z tego, testując to serwerze dostaję dla niedziałającego adresu:

Warning: fsockopen(): unable to connect to www.blaaaaabla.pl:80 in /home.9/k/a/t/katalogi/www/test.php on line 7

A testują na innym dostaję:

OK!!! www.blaaaaaaaaaaaaaaabla.pl - 85.10.218.97

MMP, Twój skryp roznież zwraca błąd:

Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home.9/k/a/t/katalogi/www/test.php on line 7

Chyba niestety będę musiał opracować system włączania iwyłączania pobierania IP :|

Mar.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Ok zastosujemy curl :blush: napisalem naszybko i nie sprawdzalem musze spadac musi dzialac

function curl_fopen ($url)
{ 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); // adres url
// zwracac rezultat w zmienna a nie w STDOUT
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_TIMEOUT, 10); // timeout polaczenia 10sec
$result = curl_exec ($ch); // wykonac zapytanie
curl_close($ch); 
return $result; 
}

$url="https://www.bhlabla.pl/";

$url=parse_url($url);

$url=$url['host'];

$result = curl_fopen ('https://'.$url);
if ($result) 
{
$ip = gethostbyname($url);
if($ip != $url) echo "OK!!! $url - $ip";
}
else echo "Adres $url nie...";

Odnośnik do komentarza
Udostępnij na innych stronach

Kórcze, nadal nic z tego, testując to serwerze dostaję dla niedziałającego adresu:

Warning: fsockopen(): unable to connect to www.blaaaaabla.pl:80 in /home.9/k/a/t/katalogi/www/test.php on line 7

Wstaw @ przed nazwa funkcji i przeczytaj Identyfikacja błędów i kontrola pracy oraz ini_set

Ponad to wydaje mi się ze to również kwestia serwerów, u mnie działa to dość szybko. Działa dłużej jeśli adres domenowy istnieje, a znacznie krócej jeśli nie ma :blush:.

"Dopiero gdy wolna wola znowu zaskoczyła, przerwali bieg po torze przeszkód ich własnej konstrukcji."

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności