01 / 08 / 2009

cURL – Giriş

ekleyen: Fatih kategori: curl| ipuçları| php

Merhabalar,
Bu makalede piyasada çok konusuldugu halde bir türlü kaynaklarina, örneklerine ve anlatimlarina pek rastlayamadigimiz, kaynaklarin nerdeyse php-manual’le sinirli oldugu CURL kütüphanesine deginecegiz.

CURL mevzusu nedir ne degildir onu kavrayalim öncelikle…CURL farkli sunuculardan farkli protokoller ile (http, ftp, https gibi.) iletisim kurmaya yarayan güzide bir PHP kütüphanemizdir demis php-manual…Bu enfes kütüphane ayni zamanda çerezlerin, post verilerinin karsiya yüklenmesini, bir de kullanici ve sifre destegini de saglamaktaymis.

CURL‘lu tanıttıktan sonra, CURL olayini örnekler dahilinde pekistirmeye baslayalim hemen, ilk ve basit CURL örnegimizle, geçerli bir protokol ile sunucuya baglanip, sunucudan istedigimiz dokümanin içerigini yazdiralim…

1
2
3
4
$ch = curl_init(); //<strong>CURL</strong> oturumunu baslattik.. 
curl_setopt($ch, CURLOPT_URL, "http://www.google.com.tr"); //URL'yi belirttik..
curl_exec($ch); //URL içerigini tarayiciya yazdirdik.
curl_close($ch); //Oturumu kapattik.

Örnekte de bir güzel anlayacagimiz gibi, belirttigimiz URL adresindeki dokümanin içerigi birebir, kendi sitemizin lokasyonunda ziyaretçiye göstermis olduk.Fakat istedigimiz bu degil de sadece içerigin belirli bir bölümü oldugunda ise CURL oturumumuzu asagidaki gibi bir hale dönüstürmek yeterli:

1
2
3
4
5
6
7
$ch = curl_init(); //<strong>CURL</strong> oturumunu baslattik.. 
curl_setopt($ch, CURLOPT_URL, "http://www.google.com.tr"); //URL'yi belirttik..
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Veriyi direk döndürmedik, curl_exec fonksiyonundan döndürmesini istedik.
$icerik = curl_exec($ch); //Dokümanin içerigini $icerik degiskenine atadik.. 
curl_close($ch); //oturumu kapattik.
preg_match("%<title>(.*?)</title>%si", $icerik, $title); //içerigimizden sadece <title></title> tagleri arasindaki bölgeyi çektik.. 
echo $title[1]; //http://www.google.com.tr URL'sinden gelen dokümanin içinde, sayfa basligini ekrana yazdirdik.

Artik basit bir CURL kavramı kafamızda oluştuğuna göre, daha komplike betiklerle CURL hadisesini örnekleyelim.Bu sefer isteğimiz, belirli bir bağlantı adresine, post verileri yollamak ve yanıtını almak olsun, örnek olarak da Facebook’a kullanıcı adımızla giriş yapalım ve gizlilik ayarları sayfamıza bir göz atalım:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$email = "e-mail";
$sifre = "sifre";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://login.facebook.com/login.php"); //Facebook'un giris sayfasi, protokol HTTPS
curl_setopt($ch, CURLOPT_POST, 1); //POST yollayacagimizi belirttik..
curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($email).'&pass='.urlencode($sifre).'&login=Login'); //Yollayacagimiz HTTP POST verileri..
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //SSL dogrulamasini kaldirdik..
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); //Çerezlerin kaydedilecegi dosya.. 
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Dokümanin içerigini curl_exec() fonksiyonundan alicagimizi belirttik.
curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.0 (Windows NT 5.1; U; en; (R1 1.5))"); //USERAGENT belirledik. 
curl_exec($ch); //Giris islemini gerçeklestirdik.. 
curl_setopt($ch, CURLOPT_URL, "http://www.facebook.com/privacy/?ref=mb"); //Girisimizi yaptiktan sonra gizlilik ayarlarimiza dogru yol aliyoruz..
curl_setopt($ch, CURLOPT_POST, 0); //Herhangi bir POST verisi yollamayacagiz.
/*Su an için daha önceden belirledigimiz seçeneklerin hepsi geçerli.*/
$giz_ayar = curl_exec($ch);
echo $giz_ayar;
curl_close($ch);

Simdilik bu kadar CURL‘le bulandigimiz yeter, ilerki makalerlerde, CURL ile “header”lara erişimi, vekil ayarları, ftp bağlantıları gibi konularda daha da bir bilgilenip, CURL kullanımın yanında, post verilerinin tespit edilmesi açısından kolaylık sağlayan elimizde bulunması gereken yardımcı programlardan bahsediceğiz.
Kolay gelsin.

  • Digg
  • del.icio.us
  • Facebook
  • Google
  • BlinkList
  • blogmarks
  • description
  • Furl
  • Ma.gnolia
  • NewsVine
  • Reddit
  • Technorati

benzer konular:

  1. HEADERFUNCTION, WRITEFUNCTION ve Firebug
  2. public, private, protected


(11 votes, average: 4.55 out of 5)
Loading ... Loading ...

10 yorum

1 | bilge

02 / 08 / 2009 - 12:23

Avatar

İlgili metin için teşekkürler.
cURL ile ilgili sonraki yazılarınızı bekliyorum..

İyi Çalışmalar

2 | omer

08 / 08 / 2009 - 11:50

Avatar

Hocam peki sayfaya cURL ile veya get_file_content ile önizleme alinmasini nasil engelleyebiliriz ? Veritabanından dogrulamak geliyo aklıma ama oda bosa sarfiyat , cURL ile her turlude kandirilabiliyo nihayetinde

3 | omer

08 / 08 / 2009 - 13:01

Avatar

Sonradan aklıma geldi onanin ornegin saatini bi kac farklı kombinasyonla session adını md5 yip dogrulama yaparak sanirim bunun onune gecilebilir.

4 | erkan

08 / 08 / 2009 - 23:41

Avatar

devamını bekkliyorum
teşekür ederim

5 | Emre Çevik

09 / 08 / 2009 - 02:00

Avatar

javascriptle onleyebilirsin sanırsam @omer diğer şekilde bişey farketmiyecektir.

6 | f.ylmz

09 / 08 / 2009 - 02:31

Avatar

@omer, Emre’nin de belirttiği gibi, javascript gibi client-side dillerde cURL etkisiz kalabiliyor.Misal yine Facebook’un “oid” iceren URL’lerinde location.href fonksiyonuyla, sayfa girilen adresten, başka bir adrese yonlendiriliyor, location.href fonksiyonundaki degiskenler, karmasik bir yapida oldugu icin cURL’e entegre edemiyorsun hatta PHP’ye de ceviremiyorsun..Yine de bu cozum de ultra kalici bir cozum degil, ugrasarak egale edebiliyorsun durumu fakat caydirici bir yöntem neticede, buna ek olarak, özel bir sifreleme fonksiyonuyla da (yine javascript ya da client-side bir dille) benzer bir etki yaratilabiliyor.

7 | c.ylmaz

09 / 08 / 2009 - 14:55

Avatar

Hocam merhaba ben de curl ile yeni başladım ilgilenmeye
Basitçe bir fotoğraf albümü sitesinden fotoğrafları kendi sitemde göstermek istiyorum.

Fotoğraf albümündeki sitede fotoğraflar resim.php?id=1234 şeklinde. kaynak koduna göz atınca fotonun
şeklinde olduğunu görüyorum

Burada “” işaretleri olduğu için sanırım fotoğrafları alamıyorum. Bunları nasıl düzeltebilirim?

8 | omer

09 / 08 / 2009 - 16:04

Avatar

arastirayim bakalim onun disinda cURL ü iyi bi denem lazim

9 | Suleyman Demirkeser

17 / 08 / 2009 - 09:32

Avatar

bu tarz kompleks konu içeren yazilari hep giriş olarak kalmis görüyoruz. inşallah buda öyle olmaz :)

10 | M.Can Kaymaz

20 / 08 / 2009 - 13:48

Avatar

Curl kaynakları gerçekten pek yok. Olanda Süleyman Demirkeser’in dediği gibi giriş kısmında kalıyor.

Umarım yazınız devam eder, daha da ileri seviyelere gider ve bizi de bilgilendirirsiniz…

yorum yaz

ne yapıyoruz

eğleniyoruz?

anket

design pattern yazılarını nasıl buldunuz?

sonuçlar

Loading ... Loading ...