2012-04-11 17 views
1

derzeit i folgende Funktion bin mitÜberprüfen Sie, ob URL existiert oder nicht PHP cURL

function urlExist($url) 
{ 
       $handle = curl_init($url); 
       if (false === $handle) 
       { 
         return false; 
       } 
       curl_setopt($handle, CURLOPT_HEADER, false); 
       curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works 
       curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); // request as if Firefox 
       curl_setopt($handle, CURLOPT_NOBODY, true); 
       curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); 
       $connectable = curl_exec($handle); 
       ##print $connectable; 
       curl_close($handle); 
       return $connectable; 
} 

Es gut für einfache url funktioniert, aber für URL nicht funktioniert, die auf eine andere Domain

Antwort

6

Sie Umleitungen müssen eingestellt FOLLOWLOCATION:

curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); 

jedoch, gibt es keinen Punkt eine GET-Anfrage hier bei der Ausstellung. Ein einfacher HEAD ist leichter, da nur Header übertragen werden. Um dies zu tun, setzen NOBODY auf true:

curl_setopt($handle, CURLOPT_NOBODY, true); 
0

ich die gleiche Funktion, aber ich bin nicht erfüllen Problem mit Domain trieuvieclam.com Umleitung auf neue Domain. Ich bin mit Chrome-Browser

function url_exists($url) { 
    $handle = curl_init($url); 
    if (false === $handle) 
    { 
      return false; 
    } 

    curl_setopt($handle, CURLOPT_HEADER, false); 
    curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works 
    curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); // request as if Firefox 
    curl_setopt($handle, CURLOPT_NOBODY, true); 
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); 
    curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 3); 
    $connectable = curl_exec($handle); 
    ##print $connectable; 
    curl_close($handle); 
    if($connectable){ 
     return true; 
    } 
    return false; 
} 

ich ändern Sie diese Zeile versucht habe: curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);-false, aber das Ergebnis ist immer noch die gleiche (bestehende die Domäne).

Diese Bedingung trifft sich nie für eine Zeichenfolge, auch nicht eine URL, vielleicht nur übereinstimmen, wenn Curl nicht auf dem Server unterstützt wird.

Verwandte Themen