2009-01-09 9 views

Antwort

6

Eigentlich fand ich das am besten funktioniert:

function GetURL($URL) 
    { 
      $ch = curl_init($URL); 

      curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 


      curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 

      curl_exec($ch); 

      $code = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 

      curl_close($ch); 

      return $code; 
    } 
16
$ch = curl_init('http://www.yahoo.com/'); 
curl_exec($ch); 
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
if (($code == 301) || ($code == 302)) { 
    //This was a redirect 
} 
+0

Cool - Gibt es eine Möglichkeit zu sagen, wohin es umleiten möchte? – GeoffreyF67

+0

Probieren Sie normales cURL aus ... es sollte Sie dorthin führen, wohin Sie wollen. – alex

+0

Gute Antwort, die fast alle möglichen Fälle abdecken sollte. Ich glaube, dass 303 und 307 Weiterleitungen auch bilden, obwohl sie weit weniger häufig sind - ich habe sie nur in spec docs, nicht in der realen Welt verwendet. –

3

Erinnern, dass keine der Antworten, die in der Regel für diese Frage zu berücksichtigen Umleitung von Javascript innerhalb des zurückgegebenen Dokument verschlüsselt verursacht nehmen gegeben werden (oder Ich denke, ein Meta-Refresh-Tag in der HTML.) Also ist es möglich, dass, egal was Sie bestimmte Arten von "Weiterleitungen" beim Testen mit dieser Art von Code verpassen werden.

Leider ist der einzige Weg, um dies zu erreichen, ein tatsächlicher Web-Browser die Webseite zu treffen, und den Web-Browser so zu modifizieren, dass er Javascript und Meta-Refresh-Weiterleitungen meldet.

Prost!

+0

Eigentlich könnte man die Javascript-Engine verwenden, die Mozilla hat, obwohl ich mich im Moment nicht an seinen Namen erinnern kann. Aber ja, du hast recht, in dieser Locke würde JavaScript Umleitung nicht fangen. – GeoffreyF67