Menggunakan CURL Dan Libcurl Dengan PHP Wahyu Santoso, S.T.
Menggunakan CURL Dan Libcurl Dengan PHP Wahyu Santoso, S.T.
1 of 5
http://wahyusantoso.staff.umm.ac.id/ilmu-umum/master-program/buku-p...
21/12/2014 23:03
2 of 5
http://wahyusantoso.staff.umm.ac.id/ilmu-umum/master-program/buku-p...
Dua opsi yang berkaitan dengan opsi CURLOPT_FOLLOWLOCATION adalah CURLOPT_M AXREDIRS dan
CURLOPT_AUTOREFERER. Opsi CURLOPT_M AXREDIRS digunakan untuk menentukan banyaknya redirect yang dapat dilalui
oleh cURL. Jika kita mensetnya dengan nilai 3, maka setelah 3x redirect cURL tidak akan mengikuti redirect selanjutnya. Penggunaan
opsi CURLOPT_AUTOREFERER yang diset ke true akan menyebabkan cURL menambahkan Referer header disetiap redirect. Pada
contoh di atas (parameter -d dengan CLI), cURL dapat digunakan untuk mem-post data layaknya kita menginput form. Kita ambil
contoh lagi, kali ini halaman yang sedang Anda baca, tepatnya form komentar di bawah. Untuk mempost komentar di halaman ini
menggunakan cURL, Anda perlu tahu field post yang akan ditangkap oleh server. OK, ini potongan HTM L untuk form komentar:
Name (required)
M ail (will not be published) (required)
Website
Ada lima field (author, email, url, comment dan comment_post_ID) yang bisa kita post. M ari kita tulis menggunakan cURL dalam
PHP. Oh iya, saya lupa menjelaskan.. Opsi untuk melakukan request dengan metode HTTP POST adalah CURLOPT_POST (harus di
set ke true jika ingin mem-post data). Opsi yang terkait adalah CURLOPT_POSTFIELDS yang nilainya berupa string yang
merepresentasikan data yang akan dipost. Lima field tersebut dapat diencode ke bentuk URL menjadi:
$data = author=gedex&email=gedex@dudu.lz&url=http://gedex.web.id&comment=testing post data in string using
cURL&comment_post_ID=5
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Atau bisa juga dengan menggunakan array:
$data = array(author => gedex, email => gedex@dudu.lz, url => http://gedex.web.id, comment => testing post data in
array using cURL, comment_post_ID => 5);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
Nah untuk mempost data (memberi komentar di halaman ini) menggunakan cURL, kodenya kurang lebih seperti ini:
gedex, email => gedex@dudu.lz, url => http://gedex.web.id, comment => testing post data in array using cURL,
comment_post_ID => 148);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
//post data
curl_exec($ch);
//tutup resource cURL
curl_close($ch);
?>
Opsi lainnya adalah CURLOPT_CONNECTTIM EOUT yang digunakan untuk menentukan seberapa cURL harus menunggu saat
mencoba terhubung. Nilainya bertipe integer yang merepresentasikan banyaknya waktu dalam satuan detik. Jika
CURLOPT_CONNECTTIM EOUT diset, nilainya perlu diperhatikan. Karena jika diset terlalu kecil dapat menyebabkan request gagal
(tidak sempat terjadi) dan jika diset terlalu tinggi (misal 1000 atau 0 untuk tak hingga) dapat menyebabkan skrip PHP menjadi crash.
21/12/2014 23:03
3 of 5
http://wahyusantoso.staff.umm.ac.id/ilmu-umum/master-program/buku-p...
Opsi yang terkait dengan opsi ini adalah CURLOPT_TIM EOUT, yang digunakan untuk menentukan berapa lama eksekusi request
cURL. Jika kita set nilainya terlalu kecil dapat menyebabkan halaman yang lambat loadingnya menjadi tidak lengkap tertangkap cURL.
Opsi lainnya adalah CURLOPT_USERAGENT, yang dapat kita gunakan untuk menset string user-agent kita saat me-request,
misalnya:
Ada banyak opsi lainnya seperti CURLOPT_BINARYTRANSFER, CURLOPT_FTPAPPEND, CURLOPT_HEADER,
CURLOPT_PUT, CURLOPT_UPLOAD, dsb. Semuanya bisa Anda baca di manual curl_setopt.
Selain fungsi curl_setopt(), fungsi lainnya yang cukup berguna adalah curl_getinfo(). Fungsi curl_getinfo() digunakan untuk
mendapatkan berbagai macam informasi mengenai halaman yang telah diakses dan juga mengenai akses (request) itu sendiri. Fungsi ini
menerima parameter berupa resource cURL dan parameter setelahnya adalah opsi yang berupa konstanta untuk mendapatkan
informasi tertentu. Jika hanya parameter awal saja maka nilai yang diberikan oleh fungsi ini berupa array berupa informasi request
terakhir. Contohnya:
<?php
$ch = curl_init(); //buat resourcce cURL
//set opsi URL dan opsi lainnya
curl_setopt($ch, CURLOPT_URL, "http://www.gedex.web.id/");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILETIM E, true);
$outout = curl_exec($ch);
//cetak info
echo
print_r (curl_getinfo($ch));
echo
?>
Informasi yang didapat adalah mengenai request terakhir yang terjadi, seperti jumlah waktu yang dibutuhkan, content-type, ukuran
header dsb. Saya menset CURLOPT_FILETIM E ke true agar curl_getinfo() memberikan output mengenai waktu modifikasi dari
dokumen yang diakses. Berikut output yang diberikan:
Array
(
[url] => http://gedex.web.id/wp-login.php?redirect_to=%2Fwp2.5%2Fwp-admin%2F
[content_type] => text/html; charset=UTF-8
[http_code] => 200
[header_size] => 922
[request_size] => 164
[filetime] => 1210067015
[ssl_verify_result] => 0
[redirect_count] => 1
[total_time] => 15.346
[namelookup_time] => 0
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 1886
[speed_download] => 122
[speed_upload] => 0
[download_content_length] => 1886
[upload_content_length] => 0
21/12/2014 23:03
4 of 5
http://wahyusantoso.staff.umm.ac.id/ilmu-umum/master-program/buku-p...
;
?>
3. Posting blog WordPress melalui XM L-RPC.
<?php
$blog_id = "1";
$username = "admin";
$password = "123456";
$post_title = "test post";
$post_content = "test post lewat xmlrpc menggunakan cURL";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/wp2.5/xmlrpc.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$header = array("Content-Type: text/xml");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$data = "
metaWeblog.newPost
21/12/2014 23:03
5 of 5
http://wahyusantoso.staff.umm.ac.id/ilmu-umum/master-program/buku-p...
$blog_id
$username
$password
title
$post_title
description
$post_content
1
;
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
echo pre . htmlentities($output) . pre;
4. Posting komentar di blog wordpress (dijelaskan di atas).
5. Banyak contoh sederhana lainnya yang diberikan di kumpulan contoh PHP/cURL.
Banyak aplikasi web berbasis PHP yang memanfaatkan cURL, diantaranya adalah:
* Beberapa CM S menggunakan cURL untuk library mereka (seperti: Geeklog, Habari, Joomla, M ediaWiki, dsb).
* Snoopy PHP Class yang mensimulasikan browser.
* phpM yProxy skrip sederhana Proxy dengan PHP
* Dan masih banyak contoh aplikasi lainnya.
Nah cukup sekian penjelasan singkat mengenai cURL dan libcurl dalam PHP. Semoga berguna. Happy coding with cURL
Download doc
Download Pdf
21/12/2014 23:03