Anasayfa

Bu ders 10 parçadan oluşan sıralı eğitim olup ücretli eğitimler kapsamındadır.
Konu içerikleri şu şekildedir;
1. Curl Kütüphanesine Giriş, Curl komutlarını tanıma, curl_init() curl_setopt() curl_exec() curl_close() komutlarının kullanımı ve bir dosyayı sunucuya indirme
2. Curl Kütüphanesi file opsiyonunu kullanarak dosya indirme
3. Curl Kütüphanesi ile hotlink korumasını aşma, referrer bilgisi gönderme.
4. Curl Kütüphanesi ile Browser bilgisi (User Agent) Gönderme
5. Curl Kütüphanesi ile Şifreli klasörlere (Auth. Httpd) erişim ve 401 sayfalara login olma
6. Curl kütüphanesi ile bir sayfaya veri gönderme, post işlemi
7. Curl Kütüphanesi ile cookie ve session işlemleri
8. Curl Kütüphanesi ile dosya yükleme - file upload
9. Curl Kütüphanesi ile https ile başlayan ssl sayfalara bağlanmak
10. Curl Uygualaması, Delicious Api kullanımı


Toplam eğitim süresi 2 saattir
Bu dersimizde curl kütüphanesini inceleyeceğiz. Curl aslında linuxta konsolda kullanabileceğiniz bir uygulamadır. Bu uygulama kütüphaneleştirilerek phpye dahil edilmiş. ve php ye browswer gibi hareket etme desteği sağlanmıştır. Manuelden curl fonksiyonlarını inceleyecek olursak sayfasına girdiğimde komutları sırası ile görebilirim.

Temel olarak curl kütüphanesini kullanmaya kalktığımızda Burdaki işlemlerden sadece bir kaçını kullanırız. İlk başta curl_init ile kütüphaneyi hazırlamalı yani fonksiyonların ilk hazırlanma aşamasını yapmalı daha sonra curl_setopt, set option fonksiyonuyla belli değerleri, belirli parametreleri atama işlemi yapabiliriz. Atama işlemlerini yaptıktan sonra curl_exec() komutunu çalıştırığımızda sayfa talep edilmiş olur. Daha sonra tüm işlemlerimiz bittiğinde ise curl_close() ile sayfayı kapatırız.

Şimdi web dizinimize a.php adında bir dosya oluşturalım. ve bu dosyayı php editörümüzle açalım. İlk kullanacağımız fonksiyon curl_init() fonksiyonudur. Bu fonksiyonu çağırdığımızda bize bir handle dönderir. İşte bu işlemle curl kütüphanesini işlem yapmak için hazırlamış oluyoruz.Şimdi bu sayfayı browser ımdan çağırıp. Sonucunu görmek istiyorum. Sayfayı çağırdığımızda Call undefined function şeklinde bir hata mesajı alıyorsak.

Fatal error: Call to undefined function curl_init() in D:\htdocs\ders\a.php on line 2

Bu curl kütüphanesinin bilgisayarımızda aktif olmadığı yada sunucuda aktif olmadığı anlamına gelir. Windows sunucu için yada windows kendi çalıştığımız bilgisayar için curl kütüphanesinin aktif edilmesi. php.ini deki ilgili dll in aktif edilmesi ile sağlanabilir. Bu durumda php.ini mizin nerde olduğunu bulup bu dosyayı düzenlemeliyiz.

php.ini nin doğru yerinin bulmanın en pratik yolu bir phpinfo dosyası oluşturmaktır.

<?php
phpinfo();
?>

şeklinde içeriği olan bir info.php dosyası oluşturup daha sonra bu dosyayı browser ımdan çağırdığımda O an sistemde kurulu olan php nin gerekli ayarlarmaları ve sistemde kurulu olan parametreleri karşıma gelir. İşte loaded configuration file ile belirtilen dosya o anda çalışmakta olduğumuz php nin Ayar dosyasını temsil eder.

Doğal olarak curl kütüphanesini aktif edebilmek için bu sayfayı açıp curl kütüphanesini bulup aktif hale getirmemiz gerekiyor. İşte bu dosyayı açtığımda curl kelimesini arattığımda extension olarak bu kütüphanenin yer aldığını görüyorum. Başında noktalı virgülün olması bu kütüphanenin pasif halde olduğunu temsil ediyor.

Başındaki noktalı virgülü kaldırdıktan sonra dosyayı kaydederek

extension=php_curl.dll

Eğerki apacheim bir modül olarak çalışıyorsa, web sunucumu tekrar çalıştırdığımda artık curl kütüphanesini kullanabilir hale geçmiş oluyorum. Tekrar sayfamızı çağırdığımızda Undefined function hatasının ortadan kalktığını görüyorum.

Evet bir sonraki adım olarak curl kütüphanesinin temel komutlarına ve temel işlevine bir göz atalım. Kütüphanemizi init ile hazır hale getirdikten sonra bir sonraki aşamamız curl set option la ilgili paremetrelerin ayarlanmasıdır.Bu parametrelere birazdan değineceğim. Daha sonra curl_exec dediğimizde sayfa talebini gerçekleştirmiş olur ve curl close dediğimizde bu açtığımız bağlantıyı kapatmış ve gerekli handle ları boşaltmış oluruz.

İşte bu durumda curl kütüphanesini işlevsel hale getiren kısım set option la verebileceğimiz bir çok parametrenin yer almasıdır. Bu kütüphanenin doğal olarak curl set option fonksiyonuna baktığımızda bir liste halinde verebileceğimiz paremetreleri sırası ile görürüz. İşte burda sırası ile gördüğüm tüm parametrelerle curl kütüphanesinin bir çok özelliğini kullanabilirim.

Curl kütüphanesi bir browser gibi hareket eder. Yani tamamen bir browser ile talep gönderiyormuş gibi davranabiliriz. Mesela google.com u açmak istiyoruz ve içeriğini curl kütüphanesi ile okumak istiyoruz. Bunun için set option parameteresinde burdaki listeden şöyle bir bakacak olursak açmak istediğimiz url yi verdiğimiz  CURLOPT_URL paremetresini verebiliriz. Paremetreler genelde üç yani bu fonskiyon üç paremetre ile kullanılır. İlk paremetre curl init le yaptığımız değişken ikinci parametre hangi değere atama istediğimiz ve üçüncü parametre bunun değeridir. http://www.google.com u açacağım için ilk parametrede değişkenim ikinci parametrede CURLOPT_URL ile hangi adresi açacağımı belirtip üçüncü parametrede google.com u yazdım. Bu işlem çalıştığında bize herhanbi bir sonuç üretmez. Sonuç üretmesi ve ya yaptığı işlemden bir değer döndermesi için yine curl_setopt paremetresini kullanarak CURLOPT_RETURNTRANSFER parametresini 1 olarak atamam gerekiyor.

bu işlemi yaptığımda curl_exec dediğimde burdan bana bir veri dönecektir.Bu sayfanın açılıp içinden okunan değeridir. İşte komutları bu şekilde alt alta yazdım ve gelip sayfamı yeniliyorum. Şu an curl kütüphanesi bir browsermış gibi google.com nu talep ediyor ve karşımıza datayı okudu. Gelen datayı görmek için ise echolattırırsam, Google dan şu an talep karşısında bize gelen sonucu görüyoruz

302 Moved
The document has moved here

Yalnız birşey dikkatimizi çekiyor ki google ın karşımala ekranını değil 302 Moved şeklinde bir yazıyla karşılaşıyoruz. Google.com a girdiğimde dikkat ederseniz yonlendirilerek google.com.tr ye yönlendiriliyorum.İşte ben google.com u talep ettiğimde beni yönlendirmeye kalkarak google.com.tr ye 302 moved hareketini sağlamaya kalkıştı.

Curl kütüphanesi ile böyle bir talep gelirse talebi takip etmesini sağlayabiliriz.İşte bunun için ise curl_setopt dedikten sonra yine ch değişkenimi atayarak sonra CURLOPT_FOLLOWLOCATION dediğimde ve bunun değerini 1 olarak verirsem bir talep geldiğinde eğer ki yönlendirme oluşuyorsa yönlendirilen sayfayı takip edip ve o sayfayı açacaktır.

Evet google.com.tr nin içeriğini şu an görüyoruz. Sorunsuz olarak işlem gerçekleşti Mesela curl kütüphanesi ile bir dosyayı okuyup ekrana yadırmaktansa dosyaya kaydetmek istiyorsam mesela php nin logosunu arıyoruz. Görseller kısmında php nin ilgili bir logosunun hoşumuza gittiğini düşünelim. İşte gelip burdan sayfanın adresini kopyalıyorum.

Bu adresin açılmasını istiyorum. Burda data değişkeni okunmuş resim dosyasının içeriği olduğu için file_put_contents komutuyla bu okuduğum data değerini bir dosyaya yazabilirim. İşte bu işlemi yaptıkdan sonra sayfayı tekrar çağırıyorum ve resim dosyası şu an talep edildi ve çekiliyor işlem bitti Aynı dizindeki oluşan dosyaya tıkladığımda internette gördüğüm resmin olduğu gibi sunucuma transfer edildiğini görüyorum. Bu gördügümüz curl e giriş ve temel işlemleri olmuş oldu.

Bir sonraki adımlarda bir çok işlemi tek tek yapacağız.Mesela referrer bilgisini göndererek hotlink korumasını geçebiliriz bunun yanında cookie ve session  oturumlarını sanki bir browser gibi davranarak karşı siteye gönderebilir. ve session oturumu yada cookie ile bize gelen bilgileri takip edebiliriz. Bunun yanında
browser gibi düşünürsek kendi browser ımızın tipinide gönderebiliriz bu gibi bir çok işlemi bir sayfaya login olma ssl olan bir adrese bağlanma gibi curl kütüphanesi ile sırayla gerçekleştircez. İlk adımımız bu şekilde


Sitenize Aşağıdaki kodlari ekleyerek videoyu izletebilirsiniz
Bu Sayfayı İmleyebilirsiniz : Bookmark and Share
Videoya Henüz Yorum Yazılmamış
İlgili Dosya Bulunmamaktadır
Adınız, Soyadınız
Mail
Telefon
Adres
Referans
Sitede bulunan Tüm dökümanların izinsiz kopyalanması yasaktır. ProgramlamaTv.com 2008
Hizmet Sözleşmesi - Gizlilik İlkesi