Php de CURL Post ve Get Kullanımı

Php'de curl fonksiyonunu kullanarak websitelerinin iceriklerine rahatlıkla ulaşabilirsiniz. Yapılması gereken curl fonksiyonunda gerekli parametrelerin setlenmesiyle gerçekleşmektedir. Bunlardan en önemlisi tabiki içeriği alınması planlanan website adresinin tanımlanmasıdır. Bazı içeriklere POST metodu ile erişebilirken bazılarına GET ile istekte bulunmamız gerekmektedir. Makalemizde farklı başlıklar altında bu işlemlerin nasıl gerçekleştirildiği ile alakalı örnekler ve açıklamalar sunacağız. HTTP Get isteği file_get_contents() metodu kullanılarak sayfa içeriğini getirmede kullanılabilir.
file_get_contens('http://yazilimdersi.info');
Bu metod GET requesti ile sonuç dönen siteler için uygundur. Ancak POST ile gönderilmesi gereken isteklerde bu metod ne yazıkki hatayı handle etmenizde yeterli olmamaktadır. Burada curl metodu devreye girmektedir. Php curl metodunu çalıştırmanız için aşağıda açıklanan dört adımı takip etmeniz gerekmektedir:
  1. Curl fonksiyonunu tanımlanması
    $ch = curl_init();
    
  2. Curl fonksiyonuna parametrelerin girilmesi
    curl_setopt($ch,CURLOPT_URL,"http://yazilimdersi.info");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    //curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers
    CURLOPT_URL -> Website içeriği getirilecek URL adresi
    CURLOPT_HEADER -> Header gönderilip gönderilmeyeceğinin belirlenmesi
    CURLOPT_RETURNTRANSFER -> true olarak setlenmesi durumunda çıktılar string olarak sitede listelenecektir.
  3. Curl fonksiyonunun çalıştırması
    $output=curl_exec($ch);
    
  4. Curl fonksiyonun kapatılması
    curl_close($ch);
    
Php programlama dilinde CURL modülünün aktif olup olmadığını aşağıda bulunan kodlama ile anlayabilirsiniz:
  1. if(is_callable('curl_init')){ 
        echo "curl aktif modda"; 
    } else { 
        echo "curl pasif modda"; 
    }
    
1. PHP Curl ile GET Metodu Örneği:
Aşağıda yazılı olan fonksiyonu kullanarak siteye Get isteğinde bulunabilirsiniz:
  1. function GetMetodu($url) { 
        $ch = curl_init(); 
        curl_setopt($ch,CURLOPT_URL,$url); 
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
     // curl_setopt($ch,CURLOPT_HEADER, false); 
        
        $output=curl_exec($ch); 
        curl_close($ch); 
        return $output; 
    } 
    
    echo GetMetodu("http://yazilimdersi.info");
Metodda görüldüğü üzere yazilimdersi.info sitesine ait içerikler GET isteğiyle içerikleri getirilmektedir.
 
2. PHP Curl ile POST Metodu Örneği:
Aşağıda yazılı olan fonksiyonu kullanarak siteye POST isteğinde bulunabilirsiniz:
  1. function httpPost($url,$params) { 
        $postData = '';
        foreach($params as $k => $v) { 
            $postData .= $k . '='.$v.'&'; 
        } 
        rtrim($postData, '&'); 
        
        $ch = curl_init(); 
    
        curl_setopt($ch,CURLOPT_URL,$url); 
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
        curl_setopt($ch,CURLOPT_HEADER, false); 
        curl_setopt($ch, CURLOPT_POST, count($postData));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 
        
        $output=curl_exec($ch); 
    
        curl_close($ch); 
        return $output; 
    }
Yukarıda yazılı olan fonksiyonu aşağıdaki şekilde çağırabiliriz:
  1. $params = array( 
        "name" => "Mustafa Çelik", 
        "age" => "26",
        "location" => "Istanbul" 
    );
     
    echo httpPost("http://yazilimdersi.info/php/postcurl.php",$params);
 3. Rastgele şekilde User-Agent Bilgisinin Gönderilmesi:
Aşağıda yazılı olan fonksiyonu kullanarak curl isteğinize rastgele user-agent ataması yapabilirsiniz. Bazı siteler user-agent bilgisi olmadan içeriklerini sunmamaktadır. Bu tip durumlarda farklı user-agent bilgilerinin gönderilmesi uygun olan durumdur.
  1. function getRandomUserAgent() { 
        $userAgents=array( 
            "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6", 
            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)", 
            "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)",
            "Opera/9.20 (Windows NT 6.0; U; en)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50", 
            "Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]", 
            "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.7) Gecko/20040624 Firefox/0.9", 
            "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/48 (like Gecko) Safari/48" 
        ); 
    
        $rastgele = rand(0,count($userAgents)-1); 
        return $userAgents[$rastgele]; 
    }
 CURLOPT_USERAGENT değişkeni aşağıdaki şekilde kullanılmaktadır.
  1. curl_setopt($ch,CURLOPT_USERAGENT,getRandomUserAgent());
 4. Curl Hatalarının Handle edilmesi
Aşağıda yazılı olan fonksiyonu kullanarak curl isteğinizde oluşan hataları hem string olarak hemde error numarasına göre listeleyebilmektedir. Burada kullanılan metodlar ise curl_errno() ve curl_error()  metodlardır.
  1. function httpGetWithErros($url) 
    { 
        $ch = curl_init(); 
        curl_setopt($ch,CURLOPT_URL,$url); 
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
    
        $output=curl_exec($ch); 
    
        if($output === false) 
        { 
               echo "Error Number:".curl_errno($ch)."<br>"; 
               echo "Error String:".curl_error($ch); 
        } 
        curl_close($ch); 
        return $output; 
    }

comments powered by Disqus