• 07-12-2012, 12:59:45
    #1
    Üyeliği durduruldu
    Merhaba,

    wordpress sitem için yazmış olduğum botta resim çekme problemi yaşıyorum. Resim linkini browsere yazdığımda resim gelmekte. chmod ayarını yaptım. Resim çekmek için curl, copy ve file_put_contents fonksiyonlarını kullandım. resimler 0 bayt olarak kaydediyor. safe modu kapattım ama işe yaramadı. bu konuda yardımınızı bekliyorum. (PHP Version 5.3.3)

    iyi günler
  • 07-12-2012, 13:05:52
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    karşı site refererer kontrolu yapıyor olabilir.
    curl_setopt ($ch, CURLOPT_REFERER, $url);
    koduyla bunu gecebilirsin, $url resmin linki
  • 07-12-2012, 23:18:17
    #3
    Üyeliği durduruldu
    file_put_contents yerine file_get_contents denermisiniz. ayrica
    curl_exec(); 'den sonra echo curl_error(); yazarsanız hatayi gorebilirsiniz. resmi cekmeye calistiginiz sayfa ssl'li ise curl'e ssl destegi vermeniz gerekir ( paremetre ile degil php'yi yeniden configure etmeniz gerek ) onuda ayrica belirteyim.

    Kolay Gelsin.
  • 08-12-2012, 12:54:57
    #4
    Üyeliği durduruldu
    Vesgatex adlı üyeden alıntı: mesajı görüntüle
    karşı site refererer kontrolu yapıyor olabilir.
    curl_setopt ($ch, CURLOPT_REFERER, $url);
    koduyla bunu gecebilirsin, $url resmin linki
    $curl = curl_init();
    $dosya = fopen($seo.".jpg","w");
    curl_setopt($curl,CURLOPT_TIMEOUT,0);
    curl_setopt($curl,CURLOPT_REFERER,$resim_adresi);
    curl_setopt($curl,CURLOPT_URL,$resim_adresi);
    curl_setopt ($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT'] );
    curl_setopt($curl,CURLOPT_FILE,$dosya);
    curl_exec($curl);
    echo curl_error();
    curl_close($curl);


    şeklinde kullandığımda yine 0 byte kaydediyor.

    hata ise Warning: curl_error() expects exactly 1 parameter, 0 given
  • 08-12-2012, 13:02:17
    #5
        $ch = curl_init();
        
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'); 
        
        curl_setopt($ch, CURLOPT_URL, $url);
        
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
        
        $xml = curl_exec($ch);
        
        curl_close($ch);
    //$url yazan yere resim adresini yazıp;
    print $xml; /* ile çıktıyı alabilir misin. birçok satır ve ilgisiz karakterler geliyorsa doğru çalışıyordur, üstteki kodları kullanırsın.*/
  • 08-12-2012, 13:16:29
    #6
    Üyeliği durduruldu
    miscel adlı üyeden alıntı: mesajı görüntüle
        $ch = curl_init();
        
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'); 
        
        curl_setopt($ch, CURLOPT_URL, $url);
        
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
        
        $xml = curl_exec($ch);
        
        curl_close($ch);
    //$url yazan yere resim adresini yazıp;
    print $xml; /* ile çıktıyı alabilir misin. birçok satır ve ilgisiz karakterler geliyorsa doğru çalışıyordur, üstteki kodları kullanırsın.*/
    hocam üstteki kodları denedim 0 byte yükledi yine ve herhangi bir çıktı (print) oluşmadı.
  • 08-12-2012, 13:38:17
    #7
    resim adresi nedir, cookie ile kullanımları da var curl'un.

    Örneğin alibaba.com'a yapılan bir botda arkaya arkaya resimler çekilemiyordu.
  • 08-12-2012, 13:41:59
    #8
    print_r($xml); sen yazıp bakıcaksın cıktısına
  • 08-12-2012, 14:00:55
    #9
    $url = '';
    $exp = explode('.', $url); 
    $file = 'resim.' . end($exp);
    $xml = file_get_contents(urlencode($url));
    	
    $handle = fopen($file, 'wb');
    
    fwrite($handle, $xml);
        
    fclose($handle);
    kesinlikle bu çalışıyor