2014-09-01 4 views
1

Я пишу что-то немного сложное с CURL. Мне случилась ситуация, когда мне нужно знать, что последний URL CURL загрузился (если он был перенаправлен) или только исходный URL-адрес от curl_init($url).Последний загруженный URL-адрес ресурса CURL

Я думаю, что если бы он был перенаправлен, я могу разобрать заголовок Location:

if(preg_match('/^Location:(.*)$/mi', $headers, $matches)>0) { 
    echo "Final location is: {$matches[1]}\n"; //We know location thanks to follow location 
} 
else { 
    echo "Well, I'm doomed...\n"; //We don't know anything 
} 

Это, кстати, причина, почему я не люблю ресурсы в PHP очень сложно.

На второй взгляд Я понял, что сценарий выше не будет работать - последняя страница, которую вы загружаете при перенаправлении, не отправляет заголовок Location. В противном случае вы снова будете перенаправлены!

+0

На второй мысль: ** последняя страница ** не отправляет местоположение - если только [предел перенаправления] (http://php.net/manual/en/function.curl-setopt.php#CURLOPT_MAXREDIRS) не является достиг. –

ответ

2

Попробуйте это:

$last_URL = curl_getinfo ($ch ,CURLINFO_EFFECTIVE_URL ); 

P.S: Если CURL достигает предела переназначения или CURLOPT_FOLLOWLOCATION устанавливается в ложь (например, в безопасном режиме), то вы должны проверить заголовок Location.

Смежные вопросы