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('https://www.omerkaracay.com.tr');
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:
- Curl fonksiyonunu tanımlanması
$ch = curl_init();
- Curl fonksiyonuna parametrelerin girilmesi
curl_setopt($ch,CURLOPT_URL,"https://www.omerkaracay.com.tr");
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.
- Curl fonksiyonunun çalıştırması
$output=curl_exec($ch);
- 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:
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:
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("https://www.omerkaracay.com.tr");
Metodda görüldüğü üzere www.omerkaracay.com.tr 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:
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:
$params = array(
"name" => "Ömer KARAÇAY",
"age" => "22",
"location" => "Istanbul"
);
echo httpPost("https://www.omerkaracay.com.tr/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.
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.
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.
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)."
";
echo "Error String:".curl_error($ch);
}
curl_close($ch);
return $output;
}
Facebook Yorum
Yorumlar