URL auf Gültigkeit überprüfen

proloser

Erfahrenes Mitglied
Hallo,

ich möchte überprüfen ob die Webseite erreichbar ist und hab folgendes versucht:

PHP:
function url_check($URL)
{
    if($FilePointer = @fopen($URL, 'r'))
    {
        @fclose($FilePointer);

        return true;
    }
    else
    {
        return false;
    }
}

Funktioniert einwandfrei auf meinem Localserver, sobald ich das Script auf mein Webserver lade bekomme ich immer "true" zurück.

Woran liegt das?

MfG proloser
 
Ich kann dir leider nicht sagen wieso es mit [phpf]fopen[/phpf] nicht klappt. Eventuell liegts an allow_url_fopen. Für dein Vorhaben würde ich eher [phpf]fsockopen[/phpf] empfehlen.
 
Ok, ich habs jetzt so:

PHP:
 $fp = fsockopen($url_check, 80, $errno, $errstr, 30);
  if (!$fp) {
    return false;
  } else {
    return true;
    fclose($fp);
  }

Es funktioniert aber wenn die Webseite nicht erreichbar ist bekomm ich folgenden fehler:

Code:
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in test.php on line 55

Warning: fsockopen() [function.fsockopen]: unable to connect to netlog.coms:80 (Unknown error) in test.php on line 55

Kann man das verhindern oder einfach ein "@" vor fsockopen und passt? :P
 
Ich hab da etwas übersehen, auf dem Webserver funktioniert es trozdem nicht. Muss ich da irrgend welche einstellungen vornehmen?

Oder gibts da noch eine andere Möglichkeit um die URL zu prüfen?
 
<?PHP
function domainAvailable ( $strDomain )
{
$rCurlHandle = curl_init ( $strDomain );

curl_setopt ( $rCurlHandle, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt ( $rCurlHandle, CURLOPT_HEADER, TRUE );
curl_setopt ( $rCurlHandle, CURLOPT_NOBODY, TRUE );
curl_setopt ( $rCurlHandle, CURLOPT_RETURNTRANSFER, TRUE );

$strResponse = curl_exec ( $rCurlHandle );

curl_close ( $rCurlHandle );

if ( !$strResponse )
{
return FALSE;
}

return TRUE;
}
?>

Anwendungsbeispiel
<?PHP
if ( domainAvailable ( 'http://www.selfphp.de' ) )
{
print ( 'Der SELFPHP-Server ist erreichbar!' );
}
else
{
print ( 'Der SELFPHP-Server ist nicht erreichbar!' );
}
?>

findest du auf http://www.selfphp.de/code_snippets/code_snippet.php?id=11
 
Zurück