• 20-02-2014, 20:58:40
    #10
    benimde bot ile resim çekememek gibi bir sorunum var

    <?php
    function ara($bas, $son, $yazi)
    {
        @preg_match_all('/' . preg_quote($bas, '/') .
        '(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
        return @$m[1];
    }
    $icerik = file_get_contents("http://www.abc.com/detay.php?id=63");
    $resim = ara('&lt;img src="','" class="pc" onmouseover=this.className="pc_over";', $icerik);
    echo "<img src='".$resim[0]."' width='100px'>";
    echo "<img src='".$resim[1]."' width='100px'>";
    echo "<img src='".$resim[2]."' width='100px'>";
    ?>
    Bu şekilde resim adreslerini alıyor ama resimler açılmıyor.
    Saga sola baktım cURL ile refer olayından bahsediyorlardı ve yukardaki kodlara şöyle bir kod ekledim

    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL,$resim[0]);
    curl_setopt($ch, CURLOPT_REFERER, $resim[0]); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //curl_exec ile artık resim elimizde
    $curlresim = curl_exec($ch);
    curl_close($ch); 
    echo "<img src='".$curlresim."' width='100px'>";
    Ama bu sefer resim hariç sayfada değişik karekterlerde bir sürü şey çıktı.
    Yardımlarınızı bekliyorum..
  • 20-02-2014, 21:13:47
    #11
    Böyle deneyin. test etmedim, hata olursa düzeltiriz
    $dosya = rand(10000000,99999999)."-".basename($resim[0]);  //rasgele sayilar ekledik, ayni isimde baska resim uzerine yazmasin diye. resimklasoru'ne chmod 777 gerekebilir.
    $fpi = fopen("resimklasoru/".$dosya, "w"); //resimklasoru kaydedilecek klasor.
    
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$resim[0]); 
    curl_setopt($ch, CURLOPT_REFERER, $resim[0]);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_FILE, $fpi); 
    curl_exec($ch); 
    curl_close($ch);  
    
    fclose($fpi);
    
    echo "<img src='resimklasoru/".$dosya."' width='100px'>";

    SurucLu adlı üyeden alıntı: mesajı görüntüle
    benimde bot ile resim çekememek gibi bir sorunum var

    <?php
    function ara($bas, $son, $yazi)
    {
        @preg_match_all('/' . preg_quote($bas, '/') .
        '(.*?)'. preg_quote($son, '/').'/i', $yazi, $m);
        return @$m[1];
    }
    $icerik = file_get_contents("http://www.abc.com/detay.php?id=63");
    $resim = ara('&lt;img src="','" class="pc" onmouseover=this.className="pc_over";', $icerik);
    echo "<img src='".$resim[0]."' width='100px'>";
    echo "<img src='".$resim[1]."' width='100px'>";
    echo "<img src='".$resim[2]."' width='100px'>";
    ?>
    Bu şekilde resim adreslerini alıyor ama resimler açılmıyor.
    Saga sola baktım cURL ile refer olayından bahsediyorlardı ve yukardaki kodlara şöyle bir kod ekledim

    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL,$resim[0]);
    curl_setopt($ch, CURLOPT_REFERER, $resim[0]); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //curl_exec ile artık resim elimizde
    $curlresim = curl_exec($ch);
    curl_close($ch); 
    echo "<img src='".$curlresim."' width='100px'>";
    Ama bu sefer resim hariç sayfada değişik karekterlerde bir sürü şey çıktı.
    Yardımlarınızı bekliyorum..
  • 20-02-2014, 23:55:58
    #12
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Hem cURL kullanımını hemde indirip kaydetmeyi, hataları yakalamayı içeren ufak bi' örnek hazırladım. İyi kodlamalar

    <?php
    	
    	function curl_put_contents($url, $file)
    	{
    		if(extension_loaded("curl"))
    		{
    			$handle = curl_init();
    			
    			curl_setopt($handle, CURLOPT_URL, $url);
    			
    			curl_setopt($handle, CURLOPT_HEADER, false);
    			curl_setopt($handle, CURLOPT_NOBODY, false);
    			
    			curl_setopt($handle, CURLOPT_BINARYTRANSFER, true);
    			curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    			
    			curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, false);
    			curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
    			
    			curl_setopt($handle, CURLOPT_TIMEOUT, 10);
    			curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);
    			
    			$request = (object) array(
    				"body" => curl_exec($handle),
    				"info" => curl_getinfo($handle),
    				"error" => (object) array(
    					"ID" => curl_errno($handle),
    					"message" => curl_error($handle)
    				)
    			);
    			
    			curl_close($handle);
    			
    			unset($handle, $url);
    			
    			if($request->error->ID === 0)
    			{
    				$handle = @fopen($file, "w+"); # Hataları gizleyelim.
    				
    				if(is_resource($handle))
    				{
    					fwrite($handle, $request->body);
    					
    					fclose($handle);
    					
    					unset($handle, $request, $file);
    					
    					return true;
    				}
    				else
    				{
    					return "File write handler was couldn't open.";
    				}
    			}
    			else
    			{
    				return $request->error;
    			}
    		}
    		else
    		{
    			return false;
    		}
    	}
    	
    	$url = "https://www.gravatar.com/avatar/8d9fdad045029154982032c6059c685a.png?s=468&d=mm&r=g";
    	$file = "ogun-saintx-karakus.png";
    	
    	if($process = curl_put_contents($url, $file))
    	{
    		echo "{$url} adresindeki {$file} dosyası başarıyla indirildi.";
    	}
    	else
    	{
    		echo "{$url} adresindeki {$file} dosyası indirilmeye çalışılırken bi' hata oluştu.";
    		echo is_bool($process) ? "Hata anlaşılamadı." : $process;
    	}
  • 21-02-2014, 12:16:15
    #13
    Resmi sayfa üzerinde elde ettikten sonra boyutlandırıp yeni isim atayarak (uye ID resmin yeni ismi olacak) ilgili klasore kayıt etcem..
    Bunları hali hazırda yapabiliyorum bana lazım olan tek şey resmi sayfada elde etmek
    yani çektikten sonra görünsün bana yeter..

    Şuanda iş yerindeyim patron azcık mız mız onu halledim sonra yukardaki kodları deniyecem.
    ilginiz için teşekkür ettim.

    EDiT:

    @LaCReMeL verdigin kod sorunsuz çalıştı
    resmi dosyaya kayıt etmeden görebilirmiyiz..
    daha sonra ben o veriyi alayarak yeni isim ve boyutlandırma işlemlerinden gecirip
    kullanacağım.
  • 21-02-2014, 15:18:18
    #14
    Gerekli boyutlandirma vs. işlemleri resimklasoru'ne kaydedilen dosya üzerinde de yapabilirsin. veya resimleri ilk etapta temp diye bir klasöre geçici olarak kaydedersin. Resim üzerinde işlemleri yaptiktan sonra asıl klasöre kaydedebilirsin.

    ilk söylediğime örnek vermek gerekirse;

    $dosya = rand(10000000,99999999)."-".basename($resim[0]);  //rasgele sayilar ekledik, ayni isimde baska resim uzerine yazmasin diye. resimklasoru'ne chmod 777 gerekebilir. 
    $fpi = fopen("resimklasoru/".$dosya, "w"); //resimklasoru kaydedilecek klasor. 
    
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL,$resim[0]);  
    curl_setopt($ch, CURLOPT_REFERER, $resim[0]);   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    curl_setopt($ch, CURLOPT_HEADER, 0);  
    curl_setopt($ch, CURLOPT_FILE, $fpi);  
    curl_exec($ch);  
    curl_close($ch);   
    fclose($fpi); 
    
    /** resim boyutlandirma islemleri **/
    $tempResim = "resimklasoru/".$dosya; //resim yeri
    $image_info = getimagesize($tempResim);  //resim bilgisi
    $width = $new_width = $image_info[0]; //resim genislik
    $height = $new_height = $image_info[1]; //resim yukseklik
    $type = $image_info[2]; //resim tipi.
    
    switch ($type) //resim tipine göre resimi aliyoruz.
    {
        case IMAGETYPE_JPEG:
            $image = imagecreatefromjpeg($tempResim);
            break;
        case IMAGETYPE_GIF:
            $image = imagecreatefromgif($tempResim);
            break;
        case IMAGETYPE_PNG:
            $image = imagecreatefrompng($tempResim);
            break;
        default:
            die('Yuklenemedi '.$tempResim.' - Dosya Tipi '.$type.' desteklenmiyor.');
    }
    
    $new_width = 180; //yeni genislik
    $new_height = $height / ($width / $new_width); //genislige bagli yukseklik hesaplamasi
    
    $new_image = imagecreatetruecolor($new_width, $new_height); //resim boyutlandirma islemleri
    imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //resim boyutlandirma islemleri
    
    //resim'i kaydet.
    switch ($type)
    {
        case IMAGETYPE_JPEG:
            imagejpeg($image, $tempResim, 100);
            break;
        case IMAGETYPE_GIF:
            imagegif($image, $tempResim);         
            break;
        case IMAGETYPE_PNG:
            imagepng($image, $tempResim);
            break;
        default:
            die('Resim kaydedilemedi: '.$tempResim);
    }
    /** resim boyutlandirma islemleri bitti **/
    
    
    echo "<img src='resimklasoru/".$dosya."' width='100px'>";
    not: bu resim boyutlandirma işlemlerini bir class yardimi ile daha temiz bir şekilde yapabilirsin. mantiği anlatmak için yazdim, biraz uzun oldu.

    SurucLu adlı üyeden alıntı: mesajı görüntüle
    Resmi sayfa üzerinde elde ettikten sonra boyutlandırıp yeni isim atayarak (uye ID resmin yeni ismi olacak) ilgili klasore kayıt etcem..
    Bunları hali hazırda yapabiliyorum bana lazım olan tek şey resmi sayfada elde etmek
    yani çektikten sonra görünsün bana yeter..

    Şuanda iş yerindeyim patron azcık mız mız onu halledim sonra yukardaki kodları deniyecem.
    ilginiz için teşekkür ettim.

    EDiT:

    @LaCReMeL verdigin kod sorunsuz çalıştı
    resmi dosyaya kayıt etmeden görebilirmiyiz..
    daha sonra ben o veriyi alayarak yeni isim ve boyutlandırma işlemlerinden gecirip
    kullanacağım.
  • 22-02-2014, 08:33:13
    #15
    Eyvallah hocam çok çok teşekkür ettim
    zahmet verdim hakkını helal et..
    Hayırlı çalışmalar.