Merhaba arkadaşlar,
Bugünkü makalemde sizlere PHP ile bağlanmaya çalıştığınız sayfada 301 veya 302 HTTP yönlendirmesi varsa bu sayfanın hangi sayfaya yönlendirdiğini bulmanızı sağlayacak bir fonksiyon veriyorum. Fonksiyonumuz aşağıdaki gibidir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
function asil_url( $url, $javascript_dongu = 0, $zaman_asimi = 5 ){ $url = str_replace( "&", "&", urldecode(trim($url))); $cerez = tempnam ("/tmp", "CURLCOOKIE"); $curl = curl_init(); curl_setopt( $curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" ); curl_setopt( $curl, CURLOPT_URL, $url ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt( $curl, CURLOPT_MAXREDIRS, 10 ); $content = curl_exec( $curl ); $cevap = curl_getinfo( $curl ); curl_close ( $curl ); if ($cevap['http_code'] == 301 || $cevap['http_code'] == 302){ ini_set("user_agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1"); if ($baslik = get_headers($cevap['url'])){ foreach($baslik as $deger){ if ( substr( strtolower($deger), 0, 9 ) == "location:" ) return get_url( trim( substr( $deger, 9, strlen($deger) ) ) ); } } } if (( preg_match("/>[[:space:]]+window.location.replace('(.*)')/i", $content, $deger) || preg_match("/>[[:space:]]+window.location="(.*)"/i", $content, $deger)) && $javascript_dongu < 5){ return get_url( $deger[1], $javascript_dongu+1 ); } else{ return array( $content, $cevap ); } } // fonksiyonun kullanımı echo asil_url("http://trkodlama.com"); // Ekran çıktısı http://www.trkodlama.com olacaktır. |
Önceki makalemde HTTP durum kodunu en başarılı nasıl bulabileceğinizi anlatmıştım. O fonksiyon aracılığıyla önce HTTP durum kodunu kontrol edebilirsiniz eğer 301 veya 302 varsa şimdi paylaştığım fonksiyon aracılığıyla yönlendirme sonucu gidilen adresi bulabilirsiniz.
Umarım faydalı olur, birinin işine de yarar.. Kolay gelsin arkadaşlar
Yorumlar