Penggunaan cURL di PHP (bagian 2, habis)
Pada edisi lalu (w3magz edisi #1) telah saya bahas dasar-dasar penggunaan cURL untuk mengambil data dari URL lain di localhost.
<?php
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://localhost/test/curl/data.php');
curl_exec($ch);
curl_close($ch);
?>
Kali ini akan saya lanjutkan pembahasan tentang pengambilan data dari website lain dengan domain yang berbeda. Pada dasarnya teknik yang digunakan adalah sama seperti sebelumnya, hanya saja di bagian CURLOPT_URL kita isikan alamat URL website yang kita tuju, dalam contoh ini adalah website http://w3magz.com, seperti di bawah ini:
<?php
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://w3magz.com');
curl_exec($ch);
curl_close($ch);
?>
Simpan file tersebut sebagai curl-latihan-2.php dan jalankan di browser. Hasilnya akan terlihat seperti ini:
Opsi Curl
Opsi curl adalah parameter-parameter yang dapat kita tambahkan untuk menentukan bagaimana curl dijalankan. Opsi dapat ditentukan dengan memanggil fungsi curl_setopt, dan menambahkan konstan dan nilai ke dalamnya. Konstan opsi curl biasanya diawali dengan CURLOPT_
Di contoh sebelumnya, kita telah menggunakan opsi curl:
<?php
curl_setopt($ch,CURLOPT_URL,'http://w3magz.com');
?>
curl_setopt = fungsi untuk memanggil opsi curl.
$ch = resource sesi curl.
CURLOPT_URL = konstan opsi curl yang nilainya kita isi dengan url http://w3magz.com
Ada banyak konstan dalam opsi curl ini, namun yang paling umum digunakan adalah sebagai berikut:
CURLOPT_HEADER, jika nilai TRUE, menyertakan info response header dalam outputnya.
CURLOPT_NOBODY, jika nilai TRUE, tidak menyertakan body ke dalam outputnya.
CURLOPT_FOLLOWLOCATION, jika nilai TRUE, akan mengikuti semua location recdirect.
CURLOPT_MAXREDIRS, menentukan jumlah redirek yang akan diikuti.
CURLOPT_RETURNTRANSFER, jika nilai TRUE, maka output dari curl_exec() dapat disimpan di dalam variabel, tidak langsung ditampilkan ke browser.
CURLOPT_POST, jika nilai TRUE, untuk melakukan pengiriman data, contohnya mengisi dan mengeksekusi form.
CURLOPT_POSTFIELDS, dapat diisi dengan data yang akan di POST, data dapat berbentuk Array atau string dengan format urlencode seperti field1=value1&field2=value2
Berikut contoh curl dengan opsi menampilkan header response, tanpa body, dan menyimpan output ke dalam variabel $result kemudian menampilkannya.
<?php
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://w3magz.com');
curl_setopt($ch,CURLOPT_HEADER,TRUE);
curl_setopt($ch,CURLOPT_NOBODY,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
echo $result;
curl_close($ch);
?>
Simpan file dengan nama curl-latihan-3.php dan lihat hasilnya di browser, seperti gambar berikut:
Mengirim Data (POST) dengan CURL
Untuk mengepost data dengan curl, kita harus memberi opsi CURLOPT_POST dengan TRUE atau 1, dan mengisi opsi CURLOPT_POSTFIELDS dengan data yang akan dipost.
Contoh:
1. Buatlah sebuah form sederhana, simpan sebagai form.php
<?php
if(isset($_POST['submit'])){
echo '
```php
';
print_r($_POST);
echo '
’;
}
?>
```Ketika form diisi dan disubmit, maka akan terlihat seperti gambar berikut:
2. Pada gambar form diatas terlihat field nama dengan value john dan field email dengan value john@test.com berhasil di submit. Mari kita coba melakukan hal yang sama, tapi melalui CURL, untuk itu buatlah file curl-latihan-4.php dengan isi sebagai berikut:
<?php
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://localhost/test/curl/form.php');
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,'nama=john&email=john@test.com&submit=submit');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
$result = curl_exec($ch);
echo $result;
curl_close($ch);
?>
Maka ketika file curl-latihan-4.php dijalankan, hasilnya adalah seperti gambar berikut:
Dapat kita lihat bahwa hasilnya adalah sama dengan ketika kita melakukan pengsian form secara manual.
Demikianlah pembahasan tentang dasar-dasar penggunaan curl di PHP, semoga bermanfaat.
Note:
response header = Reponse header adalah jawaban dari server atas permintaan dari client/browser, biasanya berisi beberapa informasi server, cache, type maupun status dokumen. Response header tidak ditampilkan di browser.
Komentar (2)
Arsip Statis