Kategoriler
Kodlama

cURL ile son konumu almak

cURL ile transfer edilen URL’in yönlendiği son konumu almak.

cURL istemci taraflı ücretsiz bir URL transfer kütüphanesidir ve PHP’de de sık kullanılmaktadır, file_get_contents() ve readfile()’a göre bir miktar farklı ve birçok açıdan çok daha avantajlıdır.

cURL ile PHP’da bir URL’in transfer edilmesini söylediğinizde cURL eğer aksi belirtilmemişse ve belirtilen URL başla bir adrese yönleniyor olsa bile ilk belirtilen URL’in içeriğini alır.

cURL’in eğer yönlendirmeyi takip etmesini istiyorsanız curl_setopt içerisinde CURLOPT_FOLLOWLOCATION kullanmalısınız ve eğer en son yönlendirildiği adresi almak isterseniz curl_getinfo içerisinde CURLINFO_EFFECTIVE_URL kullanırsınız.

Aşağıdaki yazdığım örnek fonksiyon size cURL ile transfer etmeyi denediğinin URL’in son lokasyonunu verir.

function cURL_final($url){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    curl_setopt($ch,CURLOPT_HEADER,false);
    $response = curl_exec($ch);
    $target = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
    curl_close($ch);
		if ($target)
			return $target;
    return false;
}

CURLOPT_NOBODY transfer edilen URL’in içerik çıktısınız vermez, CURLOPT_FOLLOWLOCATION URL’in yönlendirilmesini takip eder(bir limiti var), CURLOPT_AUTOREFERER ilk istenen URL’den sonraki yönlendirilmelerde ilk URL’i referer olarak kullanır, CURLOPT_HEADER URL’in header çıktısını vermez.

Kullanımı da şu şekilde olabilir:

$sonuc = cURL_final('https://source.unsplash.com/collection/3697116/1920x1080')';

Yukarıdaki kullanmada alacağınız sonuç şuna benzeyecek: https://images.unsplash.com/photo-1474403078171-7f199e9d1335?h=1080&w=1920

Kaynaklar:

Stackoverflow da bunları bulmak zor olabilir bu yüzden bloguma kaydediyorum 🙂 Kolay gelsin.