• 13-08-2012, 20:47:48
    #1
    Merhaba,
    http://xooplate.com/template/details...tor-background adresinde yeşil renkli DOWNLOAD botununu tıkladığımız zaman inen dosyanını indirme dosyasını bulamadım.
    get_headers ya da pathinfo() gibi fonksiyonlarla uğraşmama rağmen göremedim.
    Bu konu da fikri olan arkadaşlardan tecrübelerini paylaşmalarını isteyeceğim.
  • 13-08-2012, 22:54:51
    #2
    curl kullanarak indirebilirsin. follow_location true vermen yeterli. Hostingde safemode aktif ise izin vermez o zamanda header true, nobody true ver. Header'dan location al tekrar fonksiyona sok en son linki bulursun.
  • 14-08-2012, 06:47:15
    #3
    echo curl("http://xooplate.com/templates/download/11610");
    function curl($urele){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $urele);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    	curl_setopt( $ch, CURLOPT_HEADER, true );
    	curl_setopt( $ch, CURLOPT_NOBODY, true );
         curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    
        $data= curl_exec($ch);
        curl_close($ch);
        return $data;
    }
    ykarıdaki şekilde sınuç alamadım ya da ben bir yerlerde yanlış yapıyorum.
  • 14-08-2012, 09:20:35
    #4
    Sabah sabah kurcalamaya devam ediyrum.
    en son aşağıdaki gibi ile
    function getir($url, $ref = NULL)
    { 
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        $x = curl_exec($ch);
        curl_close($ch); 
        return $x;
    }
    echo $kaynak = getir('http://xooplate.com/templates/download/11610');
    preg_match('~Location: (.*)~', $kaynak, $loc);
    echo $loc[1]; // yönlendirilen adres
    yapınca ekrana yonlenen adresi bastı. Yönlenen adres dosya linkinin bulunduğu sayfa oluyor. Yani site illaki indirmek istiyorsan benim sayfamın üzerindeki linki tıklamalısın demek istiyor.

    sanırım linki tıklama ile direk inderme arasında bir karşılaştırma yapıyor. Bu konu teccrübeli olan arkadaşların yorumlarını bekliyorum.
  • 14-08-2012, 15:31:37
    #5
    Referer olarak URL'yi göndermeyi denediniz mi? Genelde bu tarz sistemlerde kendi sayfasından gelip gelmediğini kontrol etmek için referer kntrolü yaparlar.. CURL ile referer olarak aynı URL'yi göndermeyi deneyin..
  • 14-08-2012, 20:37:45
    #6
    auto_referer true ver dostum.
  • 15-08-2012, 09:47:13
    #7
    Evet dün ki araştırmalarımdan curl_setopt($curl, CURLOPT_REFERER ,"siteadi.com"); şeklinde yapıldığında sorunumun çözüldüğünü fark ettim. auto refererde sanırım kullanımı saha sağlıklı olacak onu da araştırayım. @BayGarez denemedim direk çözdüm teşekkür ederim.
    AYrıca mrtoxic size de teşekkür ederim.
  • 15-08-2012, 10:00:47
    #8
    Üyeliği durduruldu
    güzel bilgiler. konuyu takip ediyordum. bilgi verenlere teşekkürler.
  • 15-08-2012, 21:35:12
    #9
    Üyeliği durduruldu
    <?php 
    function _curl($url, $info = false) 
    {  
        $options = array(
    		CURLOPT_URL				=>	$url,
    		CURLOPT_REFERER			=>	$url,
    		CURLOPT_RETURNTRANSFER	=>	true,
    		CURLOPT_HEADER			=>	false,
    		CURLOPT_FOLLOWLOCATION	=>	true,
    		CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.79 Safari/537.1'
    	);
    
    	$ch   = curl_init();
    	curl_setopt_array($ch, $options);
    	$data = curl_exec($ch);
    	if( $info === true ) return curl_getinfo($ch);
    	
    	return $data;
    
    }
    
    $url  = 'http://xooplate.com/templates/download/11610';
    $info = _curl($url, true);
    
    header('Content-Type: ' . $info['content_type']);
    header('Content-length: ' . $info['download_content_length']); 
    header('Content-Disposition: attachment; filename="app.zip"');
    echo _curl($url); 
    ?>
    content_type'a göre filename="app.UZANTI" kısmını belirlemen lazım sadece. Her dosya .zip uzantılı olmayabilir.