2010-04-02 8 views
6

używam następujący kod:Zwinięcie przekrętu ,, nie działa?

$agent= 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0'; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_USERAGENT, $agent); 

curl_setopt($ch, CURLOPT_URL, "www.example.com"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_HEADER, 0); 

$output = curl_exec($ch); 

echo $output; 

Ale to przekierowuje do słuszne:

http://localhost/aide.do?sht=_aide_cookies_ 

Zamiast do strony URL.

Czy ktoś może mi pomóc rozwiązać mój problem, proszę?

+0

jeśli wcinasz swój kod o cztery spacje, będzie on bardziej czytelny. –

Odpowiedz

13
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

http://docs.php.net/function.curl-setopt mówi:

CURLOPT_FOLLOWLOCATION
TRUE śledzić każdą „Lokalizacja:” nagłówka, że ​​serwer wysyła jako część nagłówka HTTP (uwaga ta jest rekurencyjna, PHP będzie postępować jak najwięcej „Lokalizacja : "nagłówki, które zostały wysłane, chyba że ustawiono CURLOPT_MAXREDIRS).
+1

+1 Uwielbiam, gdy znajdę dokładnie to, czego szukam w SO dzięki jednemu wyszukiwaniu – Endophage

8

Jeśli to do adresu URL przekierowania tylko wtedy patrz poniższy kod, mam udokumentowane to za Ciebie, dzięki czemu można go używać łatwo & bezpośrednio, masz dwie opcje sterowania cURL URL przekierowania (CURLOPT_FOLLOWLOCATION/CURLOPT_MAXREDIRS):

// create a new cURL resource 
$ch = curl_init(); 

// The URL to fetch. This can also be set when initializing a session with curl_init(). 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 

// The contents of the "User-Agent: " header to be used in a HTTP request. 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0"); 

// TRUE to include the header in the output. 
curl_setopt($ch, CURLOPT_HEADER, false); 

// TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly. 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

// TRUE to follow any "Location: " header that the server sends as part of the HTTP header (note this is recursive, PHP will follow as many "Location: " headers that it is sent, unless CURLOPT_MAXREDIRS is set). 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

// The maximum amount of HTTP redirections to follow. Use this option alongside CURLOPT_FOLLOWLOCATION. 
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 

// grab URL and pass it to the output variable 
$output = curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 

// Print the output from our variable to the browser 
print_r($output); 

Powyższy kod obsługuje problem przekierowania adresu URL, ale nie zajmuje się plikami cookie (lokalny adres URL wydaje się obsługiwać pliki cookie). Jeśli chcesz do czynienia z plików cookie z zasobu Curl, to może trzeba dać następujących opcji Curl okiem: CURLOPT_COOKIE CURLOPT_COOKIEFILE CURLOPT_COOKIEJAR

celu uzyskania dalszych informacji proszę skorzystać z poniższego linku: http://docs.php.net/function.curl-setopt

Powiązane problemy