Захватить URL перенаправления с помощью PHP

вы никогда не должны этого делать .... и я думаю, что попробовать его в последних браузерах бесполезно (из того, что я знаю) .. все последние браузеры, с другой стороны, не позволят этого ....

некоторые другие ссылки, которые вы можете пройти, чтобы найти обходной путь, как получение значения serveride, но не в clientide (javascript)

Полный путь от ввода файла с помощью jQuery Как получить путь к файлу из формы ввода HTML в Firefox 3

1
задан Chris 8 June 2010 в 14:49
поделиться

3 ответа

Один из способов (из многих) сделать это - открыть URL с помощью fopen , а затем использовать stream_get_meta_data для захвата заголовков. Это небольшой фрагмент, который я взял из того, что написал недавно:

  $fh = fopen($uri, 'r');
  $details = stream_get_meta_data($fh);

  foreach ($details['wrapper_data'] as $line) {
   if (preg_match('/^Location: (.*?)$/i', $line, $m)) {
     // There was a redirect to $m[1]
   }
  }

Обратите внимание, что у вас может быть несколько перенаправлений, и они могут быть как относительными, так и абсолютными.

1
ответ дан 2 September 2019 в 23:57
поделиться

Я нашел этот ресурс наиболее полным, продуманным подходом и объяснением. Это не самый короткий фрагмент кода, но в конечном итоге вы сможете отслеживать множественные перенаправления с помощью пары таких строк:

$result = get_all_redirects('http://bit.ly/abc123');
print_r($result);
0
ответ дан 2 September 2019 в 23:57
поделиться

Вы можете сделать это с помощью cURL.

<?php

function get_web_page( $url ) 
{ 
    $options = array( 
        CURLOPT_RETURNTRANSFER => true,     // return web page 
        CURLOPT_HEADER         => true,    // return headers 
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects 
        CURLOPT_ENCODING       => "",       // handle all encodings 
        CURLOPT_USERAGENT      => "spider", // who am i 
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect 
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect 
        CURLOPT_TIMEOUT        => 120,      // timeout on response 
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects 
    ); 

    $ch      = curl_init( $url ); 
    curl_setopt_array( $ch, $options ); 
    $content = curl_exec( $ch ); 
    $err     = curl_errno( $ch ); 
    $errmsg  = curl_error( $ch ); 
    $header  = curl_getinfo( $ch ); 
    curl_close( $ch ); 

    //$header['errno']   = $err; 
   // $header['errmsg']  = $errmsg; 
    //$header['content'] = $content; 
    print($header[0]); 
    return $header; 
}  
$thisurl = "http://www.example.com/redirectfrom";
$myUrlInfo = get_web_page( $thisurl ); 
echo $myUrlInfo["url"];

?>

Код найден здесь: http://forums.devshed.com/php-development-5/curl-get-final-url-after-inital-url-redirects-544144.html

1
ответ дан 2 September 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: