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
1 2 3 4 5 6 7 8 9 10 11 12 | $curl=curl_init('http://www.google.com');//CURL BAŞLATMA $gelenveri = curl_exec($curl);//ÇALIŞTIR curl_close($curl);//KAPAT echo $gelenveri;//EKRANA YAZDIR. //CURL SEÇENEKLİ KULLANMA $curl=curl_init();//CURL BAŞLATMA $adres='http://www.google.com'; curl_setopt($curl,CURLOPT_URL,$adres);//CURL ADRES BELİRLEME curl_setopt($curl,CURLOPT_POST,true);//CURL POST ONAYI $gelenveri = curl_exec($curl);//ÇALIŞTIR curl_close($curl);//KAPAT echo $gelenveri;//EKRANA YAZDIR. |
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¶2=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
1 2 3 4 5 6 | // $curlbaslat=curl_init(); curl_setopt($curlbaslat,CURLOPT_URL,"http://www.facebook.com"); $gelendeger=curl_exec($curlbaslat); curl_close($curlbaslat); echo $gelendeger; |
CURLOPT_FILE Aktarımın yazılacağı dosyayı tanımlar ve içeriğin bu dosyaya kaynak olarak yazılmasını sağlar.
1 2 3 4 5 6 7 8 | // $curlbaslat=curl_init(); $dosya=fopen("text.html","w"); curl_setopt($curlbaslat,CURLOPT_URL,"http://www.google.com.tr"); curl_setopt($curlbaslat, CURLOPT_FILE,$dosya); curl_exec($curlbaslat); curl_close($curlbaslat); fclose($dosya); |
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.
1 2 3 4 5 6 7 8 | //XML için örnek bir tanımlama $headers=array("Accept: application/xml","Content-Type: Application/xml"); //Jeson için örnek bir tanımlama $headers=array('Content-Type: application/json'); //Önbellek kontrolü için örnek bir tanımlama $headers=array("Cache-Control: no-cache"); //İçerinğin sıkıştırılması ile ilgili örnek bir tanımlama $headers=array("Accept-encoding: gzip"); |
HEADERS ÖRNEK
1 2 3 4 5 6 7 | // $Curl=curl_init();// Oturum başlatılıyor. $sayfa_headers=array("Accept-encoding: gzip"); curl_setopt($Curl,CURLOPT_URL, "http://www.google.com.tr/");//URL TANIMLANIYOR curl_setopt($Curl,CURLOPT_HTTPHEADER,$sayfa_headers);//HTTP başlığı tanımlanıyor curl_exec($Curl);//Curl oturumu çalıştırılıyor. curl_close($Curl);//Oturum kapatılıyor ve kaynaklar serbest bırakılıyor. |
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.
1 2 3 4 5 6 7 8 | $curl=curl_init();//curl başlat curl_setopt($curl,CURLOPT_URL,"http://www.google.com.tr");//gidilecek url tanımlanıyor curl_setopt($curl,CURLOPT_VERBOSE,1);//hata ayıklam tanımlandı curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//çıktı işlevini curl_exec() olacak $gelenveri=curl_exec($curl) or die(curl_error());//curl çalışıtı hata varsa die çalışacak curl_close($curl);//curl işlemi bitiriliyor. echo $gelenveri;//gelen deger ekrana basılıyor. echo curl_error($curl);//hata varsa ekrana yazdırıyoruz. |
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.
1 2 3 4 5 6 7 8 9 10 11 | // $url="http://localhost/curl/login.php";//Veri iletilen adres $ref="http://localhost/curl/index2.php";//referans site,formun olduğu adres. $curl=curl_init(); curl_setopt($curl,CURLOPT_URL,$url);//URL tanımlanıyor. curl_setopt($curl,CURLOPT_REFERER,$ref);//Referans site tanımlanıyor. curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//Çıktı işlemi curl_exec olacak curl_setopt($curl,CURLOPT_VERBOSE,1);//Hata ayıklama tanımlandı. $gelenver=curl_exec($curl) or die(curl_error());//Curl oturumu çalıştırılıyor. curl_close($curl);//Oturum kapatılıyor ve kaynaklar serbest bırakılıyor. echo $gelenver; |
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.
1 2 3 4 5 6 7 8 9 10 11 | // $url="http://localhost/curl/login.php";//Login.php $_SERVER['HTTP_USER_AGENT'] yazarsanız gelen browser değerlerini görebilirsiniz. $browser="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"; $_curl=curl_init();//cURL oturmu başlatıldı. curl_setopt($_curl,CURLOPT_URL,$url);//URL tanımlanıyor. curl_setopt($_curl,CURLOPT_VERBOSE,1);// Hata ayıklama çalıştı. curl_setopt($_curl,CURLOPT_RETURNTRANSFER,1);// Çıktı işlevini curl_exec() olacak curl_setopt($_curl,CURLOPT_USERAGENT,$browser);// Web tarayıcı tanımlanıyor. $gelendeger=curl_exec($_curl) or die(curl_error()); curl_close($_curl); echo $gelendeger; |
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.
1 2 3 4 5 6 7 8 9 10 11 | $_url="http://aol.meb.gov.tr";//index2.php den login.php ye yönlendirme kodu yazalım $_browser="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"; $_curl=curl_init();//cURL başlattık. curl_setopt($_curl,CURLOPT_URL,$_url);//Gideceği adresi belirttik. curl_setopt($_curl,CURLOPT_VERBOSE,1);//Hata ayıklamayı etkinleştirdik. curl_setopt($_curl,CURLOPT_RETURNTRANSFER,1);//Çıktı işlemini curl_exec()den alınacak. curl_setopt($_curl,CURLOPT_USERAGENT,$_browser);//Browser bilgilerimizi tanımladık. curl_setopt($_curl,CURLOPT_FOLLOWLOCATION,1);//Yönlendirme durumu takibi. $gelendegerler=curl_exec($_curl) or die(curl_error());//cURL oturumu çalıştırıldı. curl_close($_curl);//Oturum kapatılıyor. echo $gelendegerler; |
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.
1 2 | // curl_setopt($curl,CURLOPT_COOKIEFILE, str_replace("\\","/",dirname(__FILE__).'/cerez.text')); |
CURLOPT_COOKIEJAR
Bağlantı kapandığında tüm dahili çerezlerin kaydedileceği dosyanın ismi.
1 2 | // curl_setopt($curl,CURLOPT_COOKIEJAR,str_replace('\\','/',dirname(__FILE__)).'/cerez.text'); |
Dikkat: dirname(__FILE__) programın çalıştığı tam dizin yolunu verir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // $_curl=curl_init(); $cerez=str_replace('\\','/',dirname(__FILE__)).'/cerez.txt'; curl_setopt($_curl,CURLOPT_URL,'https://localhost/index2.php'); curl_setopt($_curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($_curl,CURLOPT_POST,1); curl_setopt($_curl,CURLOPT_VERBOSE,1); curl_setopt($_curl,CURLOPT_POSTFIELDS,"adı=çağlar&soaydı=bostancı"); curl_setopt($_curl,CURLOPT_FOLLOWLOCATION,1); curl_setopt($_curl,CURLOPT_COOKIEFILE,$cerez); curl_setopt($_curl,CURLOPT_COOKIEJAR,$cerez); $sayfa =curl_exec($_curl); curl_close($_curl); echo $sayfa; echo $cerez; |
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.
1 2 3 4 5 6 7 8 9 10 | // $_url="https://facebook.com"; $_curl=curl_init(); curl_setopt($_curl,CURLOPT_URL,$_url); curl_setopt($_curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($_curl,CURLOPT_SSL_VERIFYHOST,2); curl_setopt($_curl,CURLOPT_SSL_VERIFYPEER,TRUE); curl_setopt($_curl,CURLOPT_CAINFO,getcwd().'/facebookser.crt'); echo curl_exec($_curl); curl_close($_curl); |
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
1 2 3 4 5 6 7 8 | // if($_SERVER['PHP_AUTH_USER']!='çağlar' && $_SERVER['PHP_AUTH_PW']!='1234'){ header('WWW-Authenticate: Basic realm="Benim bölgem"'); header('HTTP/1.0 401 Unauthorized'); echo 'Kullanıcı iptal düğmesine basınca çıkacak metin'; exit(); }else{ echo " |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // $username="bostancicaglar2@gmail.com"; $passo="caglarnurdan0893"; $url="http://gmail.google.com/gmail/feed/atom"; $haders=array( "Host: gmail.google.com", "Authorization: Basic".base64_encode($username.':'.$passo), "User-Agent:".$_SERVER['HTTP_USER_AGENT'], "Accept: text/html,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5", "Accept-Language:tr-TR,en;q=0.5", "Accept-Encoding:text", "Accept-Charset: ISO-8859-9,utf-8;q=0.7", "Date: ".date(DATE_RFC822) ); $curl=curl_init($url); curl_setopt($curl,CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($curl,CURLOPT_COOKIESESSION, TRUE); curl_setopt($curl,CURLOPT_HTTPHEADER, $haders); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,2); curl_setopt($curl,CURLOPT_UNRESTRICTED_AUTH,1); //curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1); $gonder=curl_exec($curl); echo $gonder; curl_close($curl); |
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
1 2 3 4 5 6 7 8 9 10 | // /* echo << <label>Ad Soyad</label> <label><input type="text" name="ad"></label> <label>e-posta</label> <label><input type="text" name="eposta"></label> <label><input type="submit" name="gonder"></label> html; */ |
GET Metodu ile Google de Arama
Aşağıdak fromu kullanarak istediğimiz bir bilgiyi göndererek googlede aratabiliriz.
1 2 3 4 5 6 7 8 | // /* echo << <label>Google de ara.</label> <label><input type="text" name="q"></label> <label><input type="submit" name="gonder"></label> html; */ |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // $aranan = urlencode('caglarbostanci.com.tr'); $site ="https://www.google.com.tr/search"; $parametre ="?q=$aranan&gbv=1&prmd=ivns&source=lnt&tbs=qdr:y&sa=X&ei=67-nVLR7hP3LA_ycgpAL&ved=0CA0QpwU"; $url = $site . $parametre; $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_URL, $url); $sonuc =curl_exec($curl); curl_close($curl); $sonuc = iconv("ISO-8859-9", "UTF-8", $sonuc); $yeni = preg_replace("/<\!doctype.*? <ol>/is", "", $sonuc); $yeni = preg_replace("/<\/ol>.*/is", "", $yeni); $yeni = preg_replace("/<span.*?<\ span="">/is", "", $yeni); $yeni = preg_replace("/\/url\?q=/is", "", $yeni); $yeni = preg_replace("/&sa=U&ei=.*?\">/is", "\">", $yeni); echo ' <ol>'.$yeni.'</ol> '; </span.*?<\></ol> |
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.
1 2 3 4 5 6 7 8 9 | // $curl_baslat=curl_init(); curl_setopt($curl_baslat,CURLOPT_URL,"http://localhost/curl/c/postbilgi.php"); curl_setopt($curl_baslat,CURLOPT_POST,1); curl_setopt($curl_baslat,CURLOPT_POSTFIELDS,'ad=ÇAĞLAR&soyad=bostanci&eposta=info@caglarbostanci.com.tr'); curl_setopt($curl_baslat,CURLOPT_RETURNTRANSFER,1); $gelen_deger=curl_exec($curl_baslat); curl_close($curl_baslat); echo $gelen_deger; |
//postbilgi.php
1 2 3 4 5 | // echo " <pre>"; print_r($_POST); |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 | // $veri=file_get_contents('caglarbostanci.png',FILE_BINARY); $url="http://localhost/curl/c/test1.php"; $curl_olustur=curl_init(); curl_setopt($curl_olustur,CURLOPT_URL,$url); curl_setopt($curl_olustur,CURLOPT_CUSTOMREQUEST,'PUT'); curl_setopt($curl_olustur,CURLOPT_RETURNTRANSFER,true); curl_setopt($curl_olustur,CURLOPT_HTTPHEADER,array('Content-Length:'.strlen($veri))); curl_setopt($curl_olustur,CURLOPT_POSTFIELDS,$veri); curl_exec($curl_olustur); $sonuc=curl_getinfo($curl_olustur,CURLINFO_HTTP_CODE); curl_close($curl_olustur); echo $sonuc; |
//test1.php
1 2 3 4 | if($_SERVER['REQUEST_METHOD']=='PUT'){//Data gönderim yönteminin tespiti $input=file_get_contents("php://input"); file_put_contents('resimdosyasi/caglarbostanci.png',$input);//Yüklenmesi gerken dizin yolu ve dosya adı } |
PUT METODU DOSYA YÜKLEME ÖRNEK SON
—————————————-
POST METODU DOSYA YÜKLEME ÖRNEK
//index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | // $veri=file_get_contents('caglarbostanci.png',FILE_BINARY); $url="http://localhost/curl/c/test1.php"; $curl_olustur=curl_init(); curl_setopt($curl_olustur,CURLOPT_URL,$url); curl_setopt($curl_olustur,CURLOPT_POST,1); curl_setopt($curl_olustur,CURLOPT_RETURNTRANSFER,true); curl_setopt($curl_olustur,CURLOPT_HTTPHEADER,array('Content-Length:'.strlen($veri))); curl_setopt($curl_olustur,CURLOPT_POSTFIELDS,$veri); curl_exec($curl_olustur); $sonuc=curl_getinfo($curl_olustur,CURLINFO_HTTP_CODE); curl_close($curl_olustur); echo $sonuc; |
//test1.php
1 2 3 4 5 | // if($_SERVER['REQUEST_METHOD']=='POST'){//Data gönderim yönteminin tespiti $input=file_get_contents("php://input"); file_put_contents('resimdosyasi/caglarbostanci_2.png',$input);//Yüklenmesi gerken dizin yolu ve dosya adı } |
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.
1 2 3 4 5 6 7 8 | // $adres="http://localhost/curl/sil.php/urun/1"; $curl_basla=curl_init($adres); curl_setopt($curl_basla,CURLOPT_RETURNTRANSFER,TRUE); curl_setopt($curl_basla,CURLOPT_CUSTOMREQUEST,"DELETE"); echo curl_exec($curl_basla); echo curl_exec($curl_basla); curl_close($curl_basla); |
BAŞARILAR…