--- title: "PHP ile cURL Kütüphanesinin Kullanımı" slug: php-ile-curl-kutuphanesinin-kullanimi date: 2005-07-08 description: "PHP'de cURL kütüphanesi ile HTTP istekleri yapma, veri indirme/yükleme, POST/GET işlemleri ve proxy/çerez yönetimi gibi ağ işlemlerini öğrenin. Temel cURL fonksiyonları ve pratik örnekler içerir." url: http://mfyz.com/tr/php-ile-curl-kutuphanesinin-kullanimi/ tags: ["PHP", "cURL", "libcurl", "HTTP", "API", "veri çekme", "dosya indirme", "POST", "GET", "Sunucu Programlama", "ağ programlama"] category: PHP migration: {"wpId":79,"wpPostDate":"2005-07-08T03:49:39.000Z"} lang: tr --- ### CURL, ( **C**lient **URL** Library Functions) PHP 4.0.2 versiyonu ile yanında çok işe yarayacak bir kütüphane getirdi. Curl kütüphanesiyle upload/download, GET/POST işlemleri, çerez ve proxy yollama işlemleri, kullanıcı, şifre onaylama sayfaları(auth.) yapılabilir. Bu makaleyi okumadan önce sunucunuzda curl yüklü olup olmadığından emin olun. Eğer yüklü değilse [http://curl.haxx.se/libcurl/php/install.html](http://curl.haxx.se/libcurl/php/install.html) adresinden nasıl yükleme & kurulum yapıldığına bakabilirsiniz. Curl oturumlarında sıkça kullanacağımız birkaç fonksiyon var. [curl_init()]("http://php.net/curl_init") : Yeni bir curl oturumu başlatır. [curl_setopt()]("http://php.net/curl_setopt") : Curl transferi için seçenekleri parametreler halinde kullanmaya yarar. [curl_exec()]("http://php.net/curl_exec") : curl_setopt() ile belirlenmiş seçenekleri işler ve transfer işlemini yapar. [curl_close()]("http://php.net/curl_close") : Daha önceden curl_init ile açılmış curl oturumunu kapatır. [curl_getinfo()]("http://php.net/curl_getinfo") : Yapılan curl işlemi hakkında çeşitli bilgilere ulaşmak için kullanılır. Bu fonksiyonların hakkında daha ayrıntılı bilgiye tıklayarak (php manual) ulaşabilirsiniz. Curl ile bir sayfanın çıktısını alan örnek bir uygulama yapalım. ```php // Curl oturum baslatiliyor. $ch = curl_init(); // URL curl_setopt($ch, CURLOPT_URL, "http://www.xhandros.net/bl/index.php"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); // ekrana basiliyor curl_close($ch); // sunucu hafizasindan siliniyor ``` Bu kod URL içeriğini sayfaya basacaktır. curl_init ile yeni bir oturum başlatıldı, setopt ile transfer seçenekleri tanımlandı, işlem yapıldı ve curl_close ile hafızadan silindi. curl_setopt içindeki header parametresi sayfa çıktısını almak için gerekli. Url parametresi ise çıktısı alınacak adresi temsil ediyor. curl_init("$adres"); şeklinde yapılma imkanıda mevcut. Şimdide curl ile localde olmayan bir sunucuya POST olarak veri gönderelim. ```php $ch = curl_init(); // oturum baslat // POST adresi curl_setopt($ch, CURLOPT_URL,"http://www.site.com/test.php"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"isim=ahmet&soyad=yilmaz"); curl_exec ($ch); curl_close ($ch); ``` POSTFIELDS seçeneğinde, normalde nasıl GET ile browser üzerinden veri yolluyorsak aynı şekilde yolluyoruz. Bu şekilde üyelik isteyen sitelere otomatik olarak üyelikler açılabilir. (foreach yardımıyla).çeşitli log sistemlerinde kullanılabilir. Mesela yazıp, sattığınız sistemlerin nerelerde kullanıldığını loglamak için kendi sunucunuza nerede kullanıldığına ait çeşitli bilgiler yollayabilirsiniz. curl ile sockets kütüphanesinde olduğu gibi sahte isteklerde yollamak mümkündür. Örneğin; referer bilgisini istediğimiz şekilde değiştirip istek gönderebiliriz. ```php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://localhost/test.php"); curl_setopt($ch,CURLOPT_REFERER,"ceviz.net"); curl_exec ($ch); curl_close ($ch); ``` CURLOPT_REFERER parametresini istediğimiz şekilde değiştirdik :) Bu şekilde ".htaccess" ile yapılan korumalarda aşılabiliyor. Diğer sayfada öğrendiklerimizle birkaç CURLOPT parametresi ekleyip bir dosya indirme fonksiyonu yazalım. ```php