12 Şubat 2008 Salı

PHP ile CURL

Merhaba Webkolog takipçileri! Bugünkü yazımda, web projelerimizde sıkça ihtiyaç duyduğumuz bir konu olan cURL işlemlerini anlatacağım. cURL, "Client URL Library" kelimelerinin kısaltmasıdır ve PHP'de farklı sunucularla iletişim kurmak, veri almak veya göndermek için kullanılan güçlü bir kütüphanedir. Örneğin, bir API'den veri çekerken, başka bir sitedeki bir dosyayı sunucumuza indirirken veya form verilerini başka bir adrese gönderirken cURL bizim en büyük yardımcımızdır.

cURL kütüphanesi, PHP'nin 4.0.2 ve sonraki versiyonlarında desteklenmektedir. Kullanmaya başlamadan önce, cURL modülünün sunucunuzda etkinleştirilmiş olması gerekmektedir.

cURL Modülünü Etkinleştirme

Eğer cURL modülü sunucunuzda aktif değilse, aşağıdaki adımları izleyerek etkinleştirebilirsiniz.

  • Windows için: PHP.ini dosyanızı açın ve extension=php_curl.dll satırının başındaki noktalı virgülü (;) kaldırın. Bu değişikliği yaptıktan sonra web sunucunuzu yeniden başlatmayı unutmayın.
  • Linux için: Terminalden aşağıdaki komutları çalıştırarak cURL modülünü yükleyebilir ve sunucunuzu yeniden başlatabilirsiniz.
    sudo apt-get install php5-curl
    sudo /etc/init.d/apache2 restart

Modülün aktif olup olmadığını kontrol etmek için phpinfo() fonksiyonunu kullanabilir veya basitçe aşağıdaki kodu çalıştırabilirsiniz:

<?php
    if (extension_loaded('curl')) {
        echo "cURL modülü yüklü ve aktif.";
    } else {
        echo "cURL modülü yüklü değil.";
    }
?>

Temel cURL Fonksiyonları

PHP'de cURL işlemleri için kullanılan temel fonksiyonlar şunlardır:

  • curl_init(): Yeni bir cURL oturumu başlatır.
  • curl_setopt(): Bir cURL oturumu için seçenekleri ayarlar. Bu fonksiyon, cURL işlemlerinin neredeyse tamamını yönettiğimiz yerdir.
  • curl_exec(): Başlatılan cURL oturumunu çalıştırır ve işlemi gerçekleştirir.
  • curl_close(): cURL oturumunu sonlandırır ve tüm kaynakları serbest bırakır.

Basit Bir cURL Get İşlemi

Şimdi en basit haliyle bir web sayfasının içeriğini cURL ile nasıl çekeceğimizi görelim.

<?php
    // Yeni bir cURL oturumu başlat
    $ch = curl_init();

    // URL'yi belirle
    curl_setopt($ch, CURLOPT_URL, "http://webkolog.net");

    // Sonucun doğrudan ekrana basılmamasını, bir değişkene atanmasını sağla
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    // Yönlendirmeleri takip et
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

    // Oturumu çalıştır ve veriyi al
    $veri = curl_exec($ch);

    // Oturumu kapat
    curl_close($ch);

    // Gelen veriyi ekrana yazdır
    echo $veri;
?>

Bu örnekte CURLOPT_RETURNTRANSFER ayarını true yaparak, curl_exec() fonksiyonunun sonucu doğrudan ekrana basmak yerine bir değişken içine atamasını sağladık. Böylece gelen veriyi işleyebiliriz.

cURL ile POST İşlemi

Bir web sayfasına form verisi göndermek için POST metodunu kullanmamız gerekir. cURL ile POST işlemi yapmak oldukça basittir.

<?php
    $ch = curl_init();

    // Hedef URL
    curl_setopt($ch, CURLOPT_URL, "http://www.site.com/test.php");

    // POST işlemini etkinleştir
    curl_setopt($ch, CURLOPT_POST, 1);

    // Gönderilecek verileri ayarla
    curl_setopt($ch, CURLOPT_POSTFIELDS, "isim=Ahmet&soyad=Yilmaz");

    // İşlemi çalıştır
    curl_exec($ch);

    // Oturumu kapat
    curl_close($ch);
?>

CURLOPT_POSTFIELDS parametresine, göndermek istediğimiz verileri URL kodlamalı bir string olarak veriyoruz.

Gelişmiş cURL Ayarları

cURL, curl_setopt() fonksiyonu ile birçok gelişmiş ayara olanak tanır.

  • CURLOPT_TIMEOUT: İşlem için maksimum bekleme süresi. 0 değeri sonsuz bekleme anlamına gelir.
  • CURLOPT_REFERER: Hedef siteye hangi adresten gelindiğini belirten sahte bir referans adresi göndermek için kullanılır.
  • CURLOPT_USERAGENT: Sunucuya hangi tarayıcıdan bağlanıldığını belirten bilgiyi (User-Agent) değiştirmek için kullanılır.
  • CURLOPT_HEADER: Gelen yanıtta HTTP başlıklarının da dahil edilip edilmeyeceğini belirler.
  • CURLOPT_COOKIE: İşleme bir çerez (cookie) eklemek için kullanılır.

Örneğin, sahte bir User-Agent ve referans bilgisi göndererek bir sayfayı çekelim:

<?php
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, "http://www.ornek-site.com");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3");
    curl_setopt($ch, CURLOPT_REFERER, "http://www.google.com");

    $veri = curl_exec($ch);
    curl_close($ch);

    echo $veri;
?>

Evet sevgili Webkolog okuyucuları, cURL ile temel ve gelişmiş işlemleri nasıl yapabileceğinizi göstermeye çalıştım. Bu güçlü araç sayesinde, projelerinizde farklı web servisleriyle ve sunucularla kolayca iletişim kurabilirsiniz.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder