Intereting Posts

cURL, перенаправить URL-адрес переменной

В настоящее время я использую curl для заполнения формы, но после завершения публикации другой скрипт, обрабатывающий форму, перенаправляется на другой URL-адрес, теперь я хочу получить URL-адрес, для которого сценарий перенаправляется на переменную.

Благодаря..

Вы бы использовали

curl_setopt($CURL, CURLOPT_HEADER, TRUE); 

И проанализируйте заголовки для заголовка location

Легкий способ найти перенаправленный URL (если вы не хотите знать заранее)

 $last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 

Здесь я получаю заголовки ресурсов http, затем разбираю заголовки в массив $ retVal. Я получил код для разбора заголовков здесь ( http://www.bhootnath.in/blog/2010/10/parse-http-headers-in-php/ ). Вы также можете использовать http://php.net/ manual / en / function.http-parse-headers.php, если у вас есть (PECL pecl_http> = 0.10.0)

  $ch = curl_init(); $timeout = 0; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); // Getting binary data $header = curl_exec($ch); $retVal = array(); $fields = explode("\r\n", preg_replace('/\x0D\x0A[\x09\x20]+/', ' ', $header)); foreach( $fields as $field ) { if( preg_match('/([^:]+): (.+)/m', $field, $match) ) { $match[1] = preg_replace('/(?<=^|[\x09\x20\x2D])./e', 'strtoupper("\0")', strtolower(trim($match[1]))); if( isset($retVal[$match[1]]) ) { $retVal[$match[1]] = array($retVal[$match[1]], $match[2]); } else { $retVal[$match[1]] = trim($match[2]); } } } //here is the header info parsed out echo '<pre>'; print_r($retVal); echo '</pre>'; //here is the redirect if (isset($retVal['Location'])){ echo $retVal['Location']; } else { //keep in mind that if it is a direct link to the image the location header will be missing echo $_GET[$urlKey]; } curl_close($ch); 

Вы можете установить для CURLOPT_FOLLOWLOCATION значение true.

Или установите для CURLOPT_HEADER значение true, а затем используйте regexp для получения заголовка Location.