URL aus Datenbank auf Erreichbarkeit prüfen (on-/off-Bild)

Naja ist doch richtig. Diese adresse ist ja nicht mal als Domain registriert! Und somit MUSS die auch OFFLINE anzeigen.

Meine reden.


Wie gezeigt, funktioniert dein Skript an dieser Stelle ebenfalls. Nur komischerweise bei dir nicht.

was ist da jetzt nun falsch

Letzte Bastion:
PHP:
echo "Test: " . $row['kunden_website'] . "<br/>"; flush();
$fp = fsockopen($row['kunden_website'], 80, $errno, $errstr, 5);
if (!$fp) {
    echo "Nicht erreichbar<br/>"; flush();
    $onoffline = "offline";
} else {
    $out = "HEAD / HTTP/1.1\r\n";
    $out .= "Host: ".$row['kunden_website']."\r\n";
    $out .= "Connection: Close\r\n\r\n";
    echo "Sende<br/>"; flush();
    fwrite($fp, $out);
    while (!feof($fp)) 
    {
      if(preg_match('@HTTP/1\.1 ([1-5]\d{2}) @',fgets($fp, 128),$match))
       {
          echo "Empfange: " . $match[0] . "<br/>"; flush();
          echo "Status: " . $match[1] . "<br/>"; flush();
          $onoffline=($match[1]>=400)?'offline':'online';
          break;
       } 
    }
    echo "Ergebnis: " .$onoffline . "<br/>"; flush();
}

Bitte davon die Ausgabe hier im Forum zeigen.
 
Paradox.
Und jetzt zerstören wir die Burg gänzlich:
PHP:
echo "Test: " . $row['kunden_website'] . "<br/>"; flush();
$fp = fsockopen($row['kunden_website'], 80, $errno, $errstr, 5);
echo "<pre>";
var_dump($fp, $errno, $errstr);
echo "</pre>";
$match = array(); $onoffline = "";
if (!$fp) {
    echo "Nicht erreichbar<br/>"; flush();
    $onoffline = "offline";
} else {
    $out = "HEAD / HTTP/1.1\r\n";
    $out .= "Host: ".$row['kunden_website']."\r\n";
    $out .= "Connection: Close\r\n\r\n";
    echo "Sende<br/>"; flush();
    fputs($fp, $out);
    while (!feof($fp)) 
    {
      $s = fgets($fp);
      if(preg_match('@HTTP/1\.1 ([1-5]\d{2}) @', $s,$match))
       {
          echo "Empfange: " . $s . "<br/>"; flush();
          echo "Status: " . $match[1] . "<br/>"; flush();
          $onoffline=($match[1]>=400)?'offline':'online';
          break;
       } 
    }
    echo "Ergebnis: " .$onoffline . "<br/>"; flush();
    fclose($fp);
}
 
nein leider übergibt er das selbe ergebniss :(

Test: http://www.google.de

resource(19) of type (stream)
int(0)
string(0) ""

Sende
Empfange: HTTP/1.1 200 OK
Status: 200
Ergebnis: online
Test: http://www.xxx.xxx.de

resource(21) of type (stream)
int(0)
string(0) ""

Sende
Empfange: HTTP/1.1 200 OK
Status: 200
Ergebnis: online
Test: http://www.links-rechts-geradeaus.de

resource(22) of type (stream)
int(0)
string(0) ""

Sende
Empfange: HTTP/1.1 200 OK
Status: 200
Ergebnis: online


Mfg..Hangrefer
 
Da schreibst du am besten mal eine Mail an den Systemadministrator und fragst ihn ob die Funktion fsockopen verändert wurde oder ähnliches und schilderst ihn den Fall mit einem Link zu dem Thema hier.
Und wär nett wenn du dich dann nochmal meldest und berichtest was er gesagt hat ;)
 
Hallo,

bei mir funktioniert deine Lösung ZodiacXP, nur total langsam... dauert echt ne halbe minute wenn er das überprüft... aber mit dem richtigen Ergebniss

PHP:
$page = "www.google.de";


$status = "offline";
$fp = @fsockopen($page , 80);

if ($fp)
{
    fputs($fp,
        "HEAD / HTTP/1.1
        Host: ".$page."
        Connection: Close
        
        "
    );
    
    $get = fgets($fp, 16);
    if ($get[9] < 4)
    {
        $status = "online";
    }
}
echo $status;


DIe letzten versionen von "euch" funktioniert bei mir genau so wenig wie bei Hangrefer. Auch alles angeblich Online obwohl es die Domains nicht gibt.

Sehr komisch... vllt gibts ein anderen lösungsweg!? zb kann man ja auch mit PHP Pingen... vllt wäre das auch ne möglichkeit um raus zu bekommen ob eine adresse/Server erreichbar ist...
 
Hallo,

bei mir funktioniert deine Lösung ZodiacXP, nur total langsam... dauert echt ne halbe minute wenn er das überprüft... aber mit dem richtigen Ergebniss

PHP:
$page = "www.google.de";


$status = "offline";
$fp = @fsockopen($page , 80);

if ($fp)
{
    fputs($fp,
        "HEAD / HTTP/1.1
        Host: ".$page."
        Connection: Close
        
        "
    );
    
    $get = fgets($fp, 16);
    if ($get[9] < 4)
    {
        $status = "online";
    }
}
echo $status;


DIe letzten versionen von "euch" funktioniert bei mir genau so wenig wie bei Hangrefer. Auch alles angeblich Online obwohl es die Domains nicht gibt.

Sehr komisch... vllt gibts ein anderen lösungsweg!? zb kann man ja auch mit PHP Pingen... vllt wäre das auch ne möglichkeit um raus zu bekommen ob eine adresse/Server erreichbar ist...

also bei mir geht das script nicht!.. er muss ja zur zeit 3 url´s aus der Db hollen und 2 davon sind fack adressen weiste ^^
 
also bei mir geht das script nicht!.. er muss ja zur zeit 3 url´s aus der Db hollen und 2 davon sind fack adressen weiste ^^

PHP:
<?

$page = "www.nehomepagedieesnichtgibt.de";


$status = "offline";
$fp = @fsockopen($page , 80);

if ($fp)
{
    fputs($fp,
        "HEAD / HTTP/1.1
        Host: ".$page."
        Connection: Close
        
        "
    );
    
    $get = fgets($fp, 16);
    if ($get[9] < 4)
    {
        $status = "online";
    }
}
echo $status;  
?>

Ausgabe
PHP:
offline

Funktioniert... auch wenns ung. 30sec dauert bis die seite geladen ist.
 
Zurück