HER YÖNÜYLE PHP CURL KULLANIMI

HER YÖNÜYLE PHP CURL KULLANIMI

Tarhi : 16-03-2017 10:45:24 | Yazar : ÇAĞLAR BOSTANCI

PHP CURL UYGULAMALARI

Curl ile çalışabilmek için php.ini dosyasından c:/xampp/php/php.ini dosyasını açın ve php_curl.ddl satırını bulun
Aranan satır : ;extension=php_curl.dell şeklinde ise önündeki ; işaretini kaldırın. Sonra xampp yeniden başlatın.
Bu sayede php crul desteğini sağlamış olmaktasınız.

CULR: Client Url sözcüğünün kısaltılmış halidir. Daniel Stenberg tarafından yazılmış Libcurl isimli kütüphaneye
verilen isimdir.
PHP http, https, ftp, gopher, telnet, dict, file, ve ldap protokollerini destekler. POST, GET, PUT, DELETE vb HTTP
isteklerini (request ) desteği bulunmaktadır.
CURL Kullanımı Dört Aşamadan Oluşmaktadır.
Curl Başlat -> curl seçenekleri -> curl çalıştır -> curl kapat.
CURLOPT_URL seçeneği zorunludur. Bu fonksiyon veri iletiminin yapılacağı url belirtir. Diğer seçenekler ise
veri göderim ve alım şekilleri ile ilgilidir.
CURL BAŞLATMA

CURL FONKSİYONLARI

curl_init : Curl oturumu başlatır.
curl_setopt : Curl transfer seçeneği tanımlar
curl_close : Curl transferini sonlandırır.
curl_copy_handle : Bir curl tanıtıcı tüm özellikleri ile kopyalar
curl_errno : Oluşturulan bağlantıda son hatanın kodunu gönderir.
curl_error : Oluşturulan bağlantıda son hatayı içeren değer gönderir.
curl_exec : Bir culr bağlantısını çalıştırır.
curl_getinfo : Oluşturulan bağlantı ile ilgili bilgileri döndürür.
curl_multi_add_handle : Tekli curl bağlantısını çoklu curl bağlantısına ekler.
curl_multi_close : Çoklu curl bağlantısını kapatır.
curl_multi_exec : Geçerli curl tanıtıcısının alt bağlantılarını çalıştırır.
curl_multi_getcontent : CURLOPT_RETURNTRANSFER etkisine bir curl tanıtıcısının içeriği döner.
curl_multi_info_read : Geçerli oturum hakkında bilgi dönderir.
curl_multi_init : Yeni çoklu curl tanıtıcısı döndürür.
curl_multi_remove_handle: Bir tekil tanıtıcıyı bir çoklu tanıtıcıdan siler.
curl_multi_select : Çoklu curl bağlantısında bir etkinlik olsundiye bekler.
curl_setopt_array : Oluşturulan curl bağlatısına çoklu sayıda seçenek ekler.
curl_version : Oluşturulan curl sürüm bilgilerini dönderir.
//CURL SEÇENEKLERİ
CURLOPT_RETURNTRANSFER : Aktarımı direk basmak yerine bir dizi olarak curl_exec() ten döndermek için TRUE ve FALSE değeri alır.
CURLOPT_FOLLOWLOCATION : HTTP başlığının bir parçası olarak sunucunun gönderdiği “Localion;” başlığını izlemek için TRUE değilse FALSE olmalıdır. Bu izleme CURLOPT_MAXREDIRS tanımlanmadıkça ardışıktır. Yani php ye gönderilen tüm location başlıklarını izleyecektir.
CURLOPT_UNRESTRICTED_AUTH: CURLOPT_FOLLOWLOCATION kullanılarak Location: yönlendirmelerini izlerken konut ismi değişsebile kullanıcı ve parola gönderimini sağlamak içiin TRUE olur.
CURLOPT_FRESH_CONNECT : Ön bellektekini kullanmaksızın yeni bir bağlantı açmak için TRUE, değilse FALSE olmalıdır.
CURLOPT_HEADER : Çıktıda başlık bulunması için TRUE veya FALSE olmalıdır.
CURLOPT_HTTPGET : HTTP istek yönetiminin GET olması için TRUE, değilse FALSE olmalıdır. GET ön tanımlı olduğundan bu sadece istek yönetimi değiştiğinde işe yarar.
CURLOPT_POST : Normal http POST yapmak için TRUE değilse FALSE olmalıdır. Bu, HTML formlarında sıklıkla kullanılan normal aplication/x-www-form-urlencoded çeşididir.
CURLOPT_POSTFIELDS : Bir HTTP “POST” işleminde gönderilecek verinin tamamı. Bir dosya göndermek için dosya isminin başına @ koyarak tam yolu belirtin. para1=val1&para2=val2&… benzeri kodlanmış bir dizge veya alan isimlerinin anahtar değerlerinin değer olarak yer aldığı bir dizi belirtilebilir. Değer bir dizi ise Content-Type başlığına multipart/form-data atanır.
CURLOPT_COOKIESESSION : Oturumu yeni bir çerez oturumu olarak imlemek için TRUE, değilse FALSE olmalıdır. Libcurl un önceki oturmdan yüklenecek oturum çerezlerini yok sayamasına sebeb olur. Öntanımlı olarak libcurl, oturum çerezi olup olmadıklarına bakmaksızın tüm çerezleri daima saklar veri oturum boyunca etkindirler.
CURLOPT_TIMEOUT : CURL işlevlerinin çalışmasına izin verilecek azmi saniye sayısı.
CURLOPT_TIMEOUT_MS : CURL işlemlerinin çalışmasına izin verilecek azmi milisaniye sayısı
CURLOPT_COOKIE : HTTP isteğinde kullanılacak “Cookie: ” başlığının içeriği. Bir noktalı virgülden sonra gelen boşluklara ayrılarak çok sayıda çerez belirtilebilir. (“meyve=elma;renk=turkuaz” gibi).
CURLOPT_COOKIEFILE : Çerez verisini içeren dosyanın adı. Çerez dosyası Netscape biçiminde veya bir dosyaya dökümlenmiş salt HTTP tarzı başlıklar biçiminde olabilir.
CURLOPT_COOKIEJAR : Bağlantı kapandığında tüm dahili çerezlerin kadedileceği dosyanın ismi.
CURLOPT_REFERER : Bir HTTP isteğinde kullanılacak “Referer:” başlığının içeriği.
CURLOPT_URL : İçeriği alınacak URL. Oturumu curl_init() ile ilklendirirken de belirtilebilir.
CURLOPT_USERAGENT : HTTP isteğinde kullanılacak “User-Agent;” başlığının içeriği.
CURLOPT_USERPWD : Bağlantısı için kullanılmak üzere “[kullanıcı]:[parola]” biçiminde kullanıcı adı ve parola
CURLOPT_AUTOREFERER : Bir Location: yönlendirmesini izleyen bir isteğin Referer: başlığının özdevinimli olarak atanması için TRUE, değilse FALSE olmalıdır.
CURLOPT_SSL_CIPHER_LIST : SSL için kullanılacak şifrelerin listesi, Örneğin RC4-SHA ve TLSv1 geçerli liste şifreleridir.
CURLOPT_SSLCERT : PEM biçemli sertifikayı içeren dosyanın ismi.
CURLOPT_SSLCERTPASSWD : CURLOPT_SSLCERT sertifikasını kullanmak için gereken parola.
CURLOPT_SSLCERTTYPE : Sertifika biçemi. Desteklenen biçemler: “PEM” (öntanımlı), “DER” ve “ENG”. cURL 7.9.3’te eklendi.
CURLOPT_SSLENGINE : CURLOPT_SSLKEY ile belirtilmiş gizli SSL anahtarının şifreleme motoru için betimleyici.
CURLOPT_SSLENGINE_DEFAULT: Bakışımız şifreleme işlemleri için kullanılan şifreleme motoru için betimleyici.
CURLOPT_SSLKEY : Gizli SSL anahtarını içeren dosyanın ismi.
CURLOPT_SSLKEYPASSWD : CURLOPT_SSLKEY ile belirtilen gizli SSL anahtarını kullanmak için gereken gizili parola. Bu bilginin olduğu programı güvenilir bir yerde tutmaya çalışın
CURLOPT_SSLKEYTYPE : CURLOPT_SSLKEY ile belirtilen gizli SSL anahtarının anahtar türü. Desteklenen anahtarr türleri:”PEM” (öntanımlı) “DER”, ve “ENG”.
CURLOPT_HTTPAUTH HTTP : Kimlik doğrulama yöntemleri:imlik doğrulama yöntem(ler)i: CURLAUTH BASIC,CURLAUTHDIGEST, CURLA UTHGSSNEGÖTİATE,CURLAUTHNTLM, CURLAUTHANY ve CURLA UTHANYSAFE.Birden fazla yöntem belirtilecekse sabitler arasında bitsel VEYA işleci kullanılabilir. Bu takdirde, cURL belirtilen yöntemlerden hangisinin sunucu tarafından en iyi desteklendiğini saptamaya çalışır ve onu kullanır. CURLAUTH ANY sabiti CURLAUTH BASIC | CURLA UTHDIGES T | CURLAUTHGSSNEGÖTIATE | CURLAUTH NTLM ifadesi için bir kısaltmadır. CURLAUTHANYSAFE sabiti CURLAUTHDIGEST | CURLA UTHGSSNEGÖTİATE | CURLA UTHNTLM ifadesi için bir kısaltmadır. cURL’un eş sertifikasını doğrulamayı durdurması için FALSE olmalıdır. Doğrulayıcı diğer sertifikalar CURLOPTCAINFO seçeneği ile belirtilebileceği gibi CURLOPT CAPATH seçeneği ile bir sertifika dizini de belirtilebilir. Ayrıca, CURLOPT SSL VERIFYHOST seçeneği de TRUE veya FALSE olabilir (öntanımlı olarak 2 olan CURLOPT_SSL_VERIFYPEER iptal edilmişse).
ÖRNEK CURL

CURLOPT_FILE Aktarımın yazılacağı dosyayı tanımlar ve içeriğin bu dosyaya kaynak olarak yazılmasını sağlar.

CURLOPT_HTTPHEADER HTTP başlık alanlarını içeren bir dizi değerin tanımlanmasını sağlar.CURL ile içerik türüne göre içerik türünü tanımlayacak bir ek başlık bilgisinin gönderilmesini sağlar.

HEADERS ÖRNEK

CURLOPT_VERBOSE
Hata ayıklama anahtarıdır. echo ifadesini kullanarak hata saptamak zordur. Bu nedenle hata alasılıkları elde etmek için CURLOPT_VERBOSE anahtarı kullanılır.

CURLOPT_REFERER
Bir http isteğinde kullanılacak referans URL tanımlanır. Bazı uygulamalarda bir formdan gelen bilginin o siteye ait olup olmadığı denetlenir. Ya da bazı referanslarına bakılarak içeriğin serbest bırakılması ya da yasaklanması sağlanabilir.

CURLOPT_USERAGENT
HTTP isteğinde kullanılacak web tarayıcının tanımlanmasını sağlar. Basız uygulamalar bu tanımlamayı zorunlu tutabilir.
Örneğin facebook içeriği internet explorer 6.0 ve üzeri zorunlu tutubilir. Ya da içeriğin bir kısmını firefox
uyumlu yapabilir. Bu gibi durumlarda cURL ile ilgili siteye erişmek istediğimizde web tarayıcının tanımlanmasını yapmalıyız.

CURLOPT_FOLLOWLOCATION

HTTP başlığının bir parçası olarak sunucunun gönderdiği “Location:” başlığını izlemeyi sağlar.
Bazı uygulamalarda adres yönlendirmesi yapılabilir. Örneğin bir kullanıcı, şifresi ile giriş yaptığı bir
sitede hesap bilgileri doğru ise onu kişisel bilgilerin bulunuduğu sayfaya yönlendirebilir. Bu gibi durumlarda
bağlantı takibini sağlayabilmek için CURLOPT_FOLLOWLOCATION anahtarına 1 ya da TRUE değeri verilir. Böylece içeriğin yönlendirildiğini
üst başlık olarak Location :http://www.facebook.com/login.php biçimindeki yönlendimeyi takip edilecektir.

CURLOPT-COOKIEFILE
Çerez verisini içeren dosyanın adı ve çerezin saklandığı dosya. Çerez dosyası bir dosyaya dönkümlenmiş
salt HTTP tarzı başlıklar biçeminde olabilir.

CURLOPT_COOKIEJAR
Bağlantı kapandığında tüm dahili çerezlerin kaydedileceği dosyanın ismi.

Dikkat: dirname(__FILE__) programın çalıştığı tam dizin yolunu verir.

HTTPS Protokolü

HTTPS (Secure Hypertext Transfer Protocol) protokolün kısaltmalarından oluşan isimdir. Klasik http protokolüne
ssl protokolün eklenmesiyle elde edilmiştir. Http transferi yapmanın bir kaç yolu vardır. Bunların en yaygını
HTTPS protokolüdür. Bu protokol ağ üzerinden alına bütün verileri şifreler, böylece verilerin ele geçirilme
ihtimalini en aza indirir.
Başında HTTPS olan adreslerle bağlantı kurduğunuzda, bilgiler sadece karşıtaraftan ve sizin tarafınızdan okunancak
şekilde şifrelenir. SSL siz http protokolünde ise şifreleme yoktur. Bu nedenle üçüncü şahıslar bilgilerinizi ele geçirebilir.
Kredi kartı ile alışverilerde https protokolünün önemi büyüktür.

CURLOPT_SSL_VERIFYHOST

CURLOPT_SSL_VERIFYHOST anahtarı aşağıdaki tamsayı değerlerinden birisi ile ayarlanabilir.
0: Ortak bir isim özelliği onayı aranmaz.
1:SSL eş sertifikasında ortak bir ismin varlığına bakılır.
2: Ortak bir isim ile birlikte sunucunun ana bilgisayar adının da eşleşmesini arar.

CURLOPT_SSL_VERIFYPEER

cURL’un eş sertifikasını doğrulaması için FALSE , değilse TRUE olmalıdır. Doğrulayıcı diğer sertifikalar
CURLOPT_CAINFO seçeneği ile belirtilebilecekği gibi CURLOPT_CAPATH seçeneği ile bir sertifika dizini de belirtilebilir.
CURLOPT_CAINFO Eşleşmelerde doğrulanack bir veya daha fazla sertifikanın tutulduğu dosyanın ismi. Bu sadeceCURLOPT_SSL_VERIFYPEER
ile birlikte kullanıldığında anlamlıdır.

Kimlik Doğrulama (Authentication)

HTTP basic Authentication, HTTP protokolünün sunduğu bir kimlik doğrulama
sistemidir. Bu sistem tüm gelişmiş web tarayıcıları tarafından desteklenir.
Aşağıdaki örneğimizde auth.php olarak kaydettikten sonra htdocs dizini altına
kaydedip web tarayıcısından http://localhost/auth.php çağırdığımızda kullanıcı
doğrulaması ve korunmuş bir dizin için kimlik doğrulam penceresi ekrana gelecektir
Bu pencere aracılığı ile kullanıcıdan kullanıcı adı ve şifre istenir. Kullanıcının girdiği
veriler 64 bit encoding yapılarak sunucuya iletilir. php ile örnek bir kimlik doğrulama
sistemi bu yöntemle kesin korunma sağlanmaz. Çünki kimlik doğrulama bilgilerimiz isteciden
sunucuya gönderilmesi sırasında ağ trafiğini dinleyen bir saldıganın bu bilgileri çok rahat
bir şekilde elde eder.

//auth.php

MERHABA {$_SERVER[‘PHP_AUTH_USER’]}

“; echo ”

Parola olarak {$_SERVER[‘PHP_AUTH_PW’]} verdiniz.

“; }

CURL İLE KİMLİK DOĞRULAMA SİSTEMİNE GİRİŞ

Kimlik doğrulama makanizması için cURL anahtarları
CURLOPT_HTTPAUTH HTTP kimlik doğrulam yöntemini kullanma
CURLOPT_UNRESTRICTED_AUTH
CURLOPT_FOLLOWLOCATION kullanarak location yönlendirmelerini izlerken konur.
ismi değişsebile, kullanıcı ve parola gönderimini sağlamak için true olmalıdır.

//gmail.php

GET METODU

HTTP kullanarak yapılan en yaygın istek, GET metodudur. Aksi belirtilmedikçe istekte bulunduğumuz bütün web
siteleri get metoduna göre çalışır. Curl ile ilgili çalışamalarda da get metoduna vurgu yapılır. POST mettodu ileyapılan
isteklerde get metoduda kullanıla bilir. Bunlara ornek olarak, curl ile bir kullanıcı sayfasından login olmak
istiyorsak ve bu sistem get ile çalışıyorsa bu aşamda kullanıcı adı ve şifresini bu metoda göre iletmek gerekmektdir.
Get ve post metodları ile çalışılacak sayfalardak formların incelenerek orada belirtilen değer adlarına göre istek
gönderilmeklidir. Bunlar buton adları, text isimleri, formun gönderildiği sayfa gibi bilgilerdir.

ÖRNEK BİR HTML FORM SAYFASI

GET Metodu ile Google de Arama

Aşağıdak fromu kullanarak istediğimiz bir bilgiyi göndererek googlede aratabiliriz.

Yukarıda belirtiğimiz formu curl ile yazalım.p://www.google.com.tr/search”; // formun gideceği adres
$parametre=”?q=caglarbostanci.com.tr”;//get ile gönderilecek değerler
$birlestir=$site.$parametre;
$curl_basla=curl_init();
curl_setopt($curl_basla,CURLOPT_RETURNTRANSFER,1);//İçeriği curl_exec() ile alalım.
curl_setopt($curl_basla,CURLOPT_URL,$birlestir);//Adres ve get deger bilgisi
$gelen_deger=curl_exec($curl_basla);//CURL ü çalıştır.
curl_close($curl_basla);//Curl ü sonlandır.
echo $gelen_deger;//İçeriği ekrana yaz.

Yukarıda yapmış olduğumuz örneği biraz daha biçimlendirerek sayfamızda yayınlanabilir hale getirelim.

POST METODU
Post metodu da get gibi form bilgi transfer yöntemi gibi verileri iletmeye yarayan sistemdir. Get metodundan
farkı ise; get verileri url üzerinden iletirken Post veri iletiminde bir şey görünmez.Kredi kartı, şifre gibi
özel bilgilerin iletiminde daha çok kullanılmaktadır. Curl oluştururken çalışacağımız sayfa post metodu kullanıyorsa
yine bu form üzerindeki bilgilerin kontrol edilmesi gerekir.(Formun hanigi sayfaya gönderildiği,giden degerler, form anahtarları)

CUROPT_POST

HTTP Post isteği tanımlar. Bu parametre iki deger alır. TRUE/FALSE. True post isteği onayı için, false post
isteğinin iptali için kullanılır. True/false kullanıldığı gibi 1/0 olarakta kullanılmaktadır.

CURLOPT_POSTFIELDS

Bir HTTP POST işleminde gönderilecek verinin tamamını deger olarak olır. Bir formdaki girdilerin anahtar ve
degerleri bir url bir url sorgusu bu anahtar deger olarak verilir. Bu nedenle bu anahtarın alacağı degerler
name=çağlar&soyad=bostancı şekline getirmektedir.

//postbilgi.php

PUT METODU

PUT metodu dosya yüklemelerinde özellikle POST metodu gibi işlev görür. Put metodu ile dosya yükleme işlemi
POST metoduna göre daha basittir. Aşağıdaki kodlar curl ile put metoduna dayanarak caglar.jpg dosyasının içeriğini
okuyup belirtilen sayfaya aktaramaktır.

——————————————————
PUT METODU DOSYA YÜKLEME ÖRNEK
//index.php


//test1.php

PUT METODU DOSYA YÜKLEME ÖRNEK SON
—————————————-
POST METODU DOSYA YÜKLEME ÖRNEK
//index.php

//test1.php

POST METODU DOSYA YÜKLEME ÖRNEK SON
————————————————————-DELETE METODU
DELETE metodu aynı zamanda PUT metodu gibi hassas bir metottur. Bu metod bir kaynağı silmek için kullanılır.

BAŞARILAR…
Reklam Alanı