Merhabalar! Bugün sizlere opencart e-ticaret sitelerinde ” curl kütüphanesi ” nasıl kullanır aktarmaya çalışacağım.
Başlamadan önce adımları sıralayalım;
- Curl nedir ?
- Neden Curl kullanmamız gerekir ?
- Nasıl kurulum yapacağız ?
Curl Nedir?
cURL, çeşitli protokoller kullanarak, veri aktarımı sağlamak için kütüphane ve komut satırı aracı sunan bir bilgisayar yazılımı projesidir. cURL projesi, libcurl ve cURL olarak ikiye ayrılır. İlk olarak 1997 yılında yayınlanmıştır. İsminde bulunan “c” İngilizce’deki client (istemci) kelimesinden gelmektedir.
URL adres satırını kullanarak dosya almak ya da göndermek için bir komut satırı aracıdır.
cURL, libcurl kütüphanesini kullanmaktadır. HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, LDAP, DAP, DICT, TELNET, FILE, IMAP, POP3, SMTP ve RTSP internet protokollerini desteklemektedir. cURL, HTTPS gibi güvenli protokoller belirtildiğinde varsayılan olarak HTTPS ve SSL sertifika doğrulaması yapar. cURL uzak bir sunucuya HTTPS ile bağlandığında, ilk olarak uzak sunucunun sertifikasını kontrol ederek geçerliliğini doğrulamasının ardından bağlantı sağlamaktadır.
cURL, eğer uzak sunucu kendinden imzalı (self – signed) bir sertifikaya sahipse ya da sunucu sertifikası geçerli bir CA (certificate authority) tarafından imzalanmamışsa, hata mesajı dönecektir. Bu yüzden sertifika doğrulamasını es geçmek için -k
ya da --insecure
seçenekleri kullanılabilir. Alternatif olarak, uzak sunucu güvenilirse, uzak sunucunun sertifikası, CA sertifikalarının depolandığı dosyaya eklenebilir.
curl www.example.com curl -o example.html www.example.com curl -O www.example.com/example.html curl -OL www.example.com/example.html
cURL varsayılan olarak çıktıyı, sistemin standart çıktısı (stdout) olarak verir. Bu yüzden yukarıdaki komut, www.example.com’ un kaynak kodunu terminal penceresinde gösterir.
-o
parametresi kullanılarak ekran çıktısını bir dosyaya aktarabilirsiniz. -L eklemeniz halinde erişmek istediğiniz adrese yönlendirilmesi halinde geçerli sayfaya yönlendirilmesini sağlamaktadır.
Opencart Curl Neden Kullanılır ?
Aslında bu sorunun bir çok cevabı bulunmakta;
- Belirli aralıklarla bir adres satırından xml çekmek isteyebilirsiniz
- Bir adrese sürekli istek atarak belirli dataları göndermek isteyebilirsiniz
- Local sunucunuz üzerinden data çekmek isteyebilirsiniz
bunlar gibi daha sayabileceğimiz örnekler bulabilirsiniz.
Nasıl Kurulum Yapacağız?
Başlamadan önce ! Lütfen sitenizin tam bir yedeğini alınız, burada yapacağınız bir hata sonucunda sitenizde kalıcı bir hasar bırakabilirsiniz. Bu işlemi uygulamak için giriş seviyesinde bile olsa kod bilgisine ihtiyacınız olabilir.
- İlk olarak ftp üzerinden opencart sitenize bağlanmanız gerekmektedir.
- Opencart > system > library klasörünün altına curl.php isminde bir dosya açınız.
- curl.php dosyasını oluşturduktan sonra içine yazacağınız basit bir php bloğunu aşağı kısımdan alınız.
<?php class Curl { private static $instance; public static function get_instance($registry) { if (is_null(static::$instance)) { static::$instance = new static($registry); } return static::$instance; } public function do_request($url, $params=array()) { // init curl object $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BUFFERSIZE, 128); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3600); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, function( $DownloadSize, $Downloaded, $UploadSize, $Uploaded ){ return ($Downloaded > (1 * 1024)) ? 1 : 0; }); $params_string = ''; if (is_array($params) && count($params)) { foreach($params as $key=>$value) { $params_string .= $key.'='.$value.'&'; } rtrim($params_string, '&'); curl_setopt($ch,CURLOPT_POST, count($params)); curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string); } $result = curl_exec($ch); curl_close($ch); return $result; } }
Yukarıdaki kod bloğunu kısa bir şekilde açıklamaya çalışalım;
Curl isminde bir sınıf oluşturduk, sınıfa özel bir instance yarattık, akabinde static get_instance fonksiyonu oluşturup static ile erişmek için ayarlamamızı yaptık.
do_request isminde bir fonksiyon oluşturarak curl işlemlerimizi başlattık; burada fonksiyonumuza iki adet parametre alacağını, birinin string diğerinin ise array olacağını da belirttik.
curl_init() diyerek bağlantımızı açtık, curl isteğimizin beraberinde CURLOPT_CONNECTTIMEOUT ne kadar süre bağlantı cevabı bekleyeceğini, CURLOPT_URL ile hangi adrese bağlanacağını CURLOPT_HEADER header bilgisini aktarıp aktarmayacağımızı belirtiyoruz. Burada ek olarak CURLOPT_PROGRESSFU2NCTION bağlandığımız adres üzerinde ufak bir download testi yaparak bağlantı geçerliliğini test ediyoruz.
Gönderdiğimiz array değerimizi key=value&key=value birleştirme yaparak url’ mize değerlerimizi göndermiş oluyoruz.
Response cevabımızı alıp bağlantıyı kapatarak fonksiyonumuzu bitirmiş olduk.
Sonraki aşama
Curl işlemimizi nerede kullanacak isek ilgili dosyayı açıyoruz,
$this->load->library('curl');
$obj_curl = Curl::get_instance($this->registry);
$result = $obj_curl->do_request('url');
print_r($result);
Basit bir şekilde curl kütüphanemize erişerek do_request fonksiyonumuza erişerek url kısmına adresimize istek atarak işlemimizi tamamlamış olduk.