<?php

/**
 * Yönlendirilmiş olan bir web adresinin,
 * en son yönlenmiş olduğu web adresini bulur.
 *
 * eBurhan ~ 7 Ağustos 2009 ~ www.eburhan.com
 */
function enson_url($eskiUrl$max=5$i=0
{
    
// maksimum kaç adet yönlendirilmiş adres
    // takip edilecek onun kontrolünü yapıyoruz
    
if( $max === $i ) {
        return 
$eskiUrl;
    }

    
$ch  curl_init();
    
curl_setopt($chCURLOPT_URL$eskiUrl);
    
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_HEADERtrue);
    
curl_setopt($chCURLOPT_CONNECTTIMEOUT3);
    
curl_setopt($chCURLOPT_NOBODYtrue);
    
curl_setopt($chCURLOPT_REFERER$_SERVER['HTTP_REFERER']);
    
curl_setopt($chCURLOPT_USERAGENT$_SERVER['HTTP_USER_AGENT']);
    
curl_setopt($chCURLOPT_VERBOSEfalse);
    
curl_setopt($chCURLOPT_NOPROGRESStrue);
    
$headers curl_exec($ch);
    
curl_close($ch);

    
// yönlendirilMEmiş ise URL'yi aynen geri yolla
    
if( preg_match('/Location: (.*)/i'$headers$location) === ) {
        return 
$eskiUrl;
    }

    
// yönlendirilmiş olan sayfayı veya adresi al
    // sayfanın önünde '/' var karakterleri varsa bunları sil
    
$yeniUrl preg_replace('/^\/+/'''trim($location[1]));

    
// yeni adresin başında bir http(s) eki yoksa
    
if( preg_match('|^(https?://)|'$yeniUrl$matches) === ) {
        
$eskiUrl parse_url($eskiUrl);
        
$eskiUrl $eskiUrl['scheme'].'://'.$eskiUrl['host'].'/';
        
$yeniUrl $eskiUrl.$yeniUrl;
    }

    return 
enson_url($yeniUrl$max$i++);
}

?>