|
PHP ile curl kütüphanesinin kullanımı
Jul 22,2007 00:00
by
canawar
CURL, (Client URL Library Functions) 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 adresinden nasıl yükleme & kurulum yapıldığına bakabilirsiniz. PHP Kodu: <? // Curl oturum başlatılıyor.. $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 basılıyor curl_close($ch); // sunucu hafızasından siliniyor ?>
PHP Kodu: <? $ch = curl_init(); // oturum başlat //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 Kodu: <? $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://localhost/test.php"); curl_setopt($ch,CURLOPT_REFERER,"turkprogrammers.net"); curl_exec ($ch); curl_close ($ch); ?>
PHP Kodu: <? function dosya_indir($adres,$ad) { if (!extension_loaded(curl)) { die("Extension yuklu degil socket deneyebilirsin"); } $ch = curl_init("$adres"); if (!$ch) { die("Curl oturumu baslatamadim.."); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); curl_close($ch); // baglantiyi kapa $islem = fopen("$ad", "a+"); fwrite($islem, $data); fclose($islem); if ($islem) { echo" Dosya basariyla yuklendi..."; } else { die("Dosya yuklenemedi"); } } // Örnek kullanım // dosya_indir('http://www.turkprogrammers.net/ .rar',' .rar'); // 1. kısım yuklenecek URL , 2. kısım server'a yuklendigi zamanki dosya adi ?> Şimdi gelelim sistemin nasıl işlediğine ; Ve dosya indirme işlemi tamamlanır .Eğer bu işlemi local olmayan sunucunuzda yaparsanız çok büyük dosyaları çok az bir zamanda çekebileceğinizi görebilirsiniz. Ben yaptığım testlerde saniyede 400 kb civarı çekiyordum :) İşleme curl_Getinfo altında CURLINFO_SPEED_DOWNLOAD parametresi eklerseniz download hızını ölçebilirsiniz. PHP Kodu: $dlhizi = curl_getInfo($ch,"CURLINFO_SPEED_DOWNLOAD"); gibi.. Kolay gelsin |