Cara menggunakan php curl example

Curl merupakan sebuah fungsi yang dimiliki oleh bahasa pemograman PHP, Curl sendiri berfungsi untuk mengambil sebuah data dari situs lain misalnya seperti pengambilan data dalam bentuk html source dari sebuah situs, atau mengambil data dalam bentuk json yang ada pada situs lain, dan lain-lain.

Selain Curl juga ada fungsi serupa yang tugasnya hampir sama dengan Curl, tapi kelebihan dari Curl adalah kamu bisa melakukan konfigurasi header dan body response sesuai keinginan kamu, namun pada kasus di artikel ini penulis hanya akan memberikan cara sederhana untuk mengambil data dari situs lain tanpa melakukan konfigurasi header / body responses / sejenisnya, berikut tutorialnya.

Langkah:

1. Kamu buka aplikasi IDE kamu atau bisa juga menggunakan notepad.

2. Lalu kamu masukan kode di bawah ini.

 "https://www.google.com/",  // kamu ubah urlnya sesuai keingina kamu
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);  // variabel ini akan menjadi variabel yang memiliki data dari hasil pengambilan data situs lain
$err = curl_error($curl);

curl_close($curl);

Kode di atas merupakan fungsi utama dari pengambilan data dari situs yang ingin kamu ambil datanya atau keseluruhan tampilannya, pada kasus ini penulis mengambil contoh dengan mengambil source dari situs Google.

3. Karena kode di atas hanya fungsi utamanya dari proses pengambilan data, kita memerlukan tambahan kode untuk menampilkan data yang telah kita ambil, berikut kodenya.

if ($err) {
  echo "cURL Error #:" . $err;  // fungsi ini akan menampilkan pesan error jika misalnya data dari situs lain tidak dapat diambil
} else {
  echo $response;  // fungsi ini akan menampilkan hasil data yang telah kita ambil dari fungsi utama pada kode diatas
}

Tambahkan kode ini di bawah kode di atas.

4. Kamu gabungkan kedua kode di atas sehingga mirip seperti gambar di bawah ini.

Cara menggunakan php curl example

5. Jika sudah, sekarang kita coba lakukan tes dengan mencobanya di aplikasi peramban yang biasa kamu gunakan, tapi sebelumnya jangan lupa untuk menyimpan proyek kamu dengan ekstensi berkasnya .php misalnya seperti curl.php

Cara menggunakan php curl example

6. Selesai.

Catatan:

Karena berkas di atas menggunakan PHP, pastikan kamu melakukannya di hosting / cpanel atau bisa juga menggunakan aplikasi layanan localhost sehingga bisa kamu lakukan di sistem operasi kamu, misalnya untuk sistem operasi Windows bisa menggunakan XAMPP atau WAMPP.

Cara menggunakan php curl example

cURL adalah alat untuk mentransfer file dan data dengan sintaks URL, mendukung banyak protokol, termasuk HTTP, FTP, TELNET dan banyak lagi. Awalnya, cURL ini dirancang untuk menjadi alat baris perintah. Beruntung bagi kita, library cURL ini juga didukung dengan PHP. Dalam artikel ini, kita akan melihat beberapa fitur canggih cURL, dan bagaimana kita dapat menggunakannya dalam skrip PHP kita.

Mengapa cURL?

Memang benar bahwa ada cara lain untuk mengambil isi dari suatu halaman web. Berkali-kali, sebagian besar karena kemalasan, saya hanya menggunakan fungsi PHP sederhana bukan cURL:

$content = file_get_contents("http://www.nettuts.com");

// or

$lines = file("http://www.nettuts.com");

// or

readfile("http://www.nettuts.com");

Namun mereka hampir tidak memiliki fleksibilitas dan kekurangan akan penanganan kesalahan. Selain itu, ada beberapa tugas tertentu yang tidak dapat Anda lakukan, seperti berurusan dengan cookie, otentikasi, pengiriman form, upload file, dll.

cURL adalah library yang hebat yang mendukung banyak protokol, opsi, dan memberikan informasi rinci tentang permintaan URL.

Struktur Dasar

Sebelum kita beralih ke yang lebih rumit contoh, mari kita tinjau struktur dasar dari sebuah permintaan cURL di PHP. Ada empat langkah utama:

  1. Menginisialisasi
  2. Mengatur Opsi
  3. Mengeksekusi dan Mengambil Hasil
  4. Membebaskan handle cURL
// 1. initialize
$ch = curl_init();

// 2. set the options, including the url
curl_setopt($ch, CURLOPT_URL, "http://www.nettuts.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

// 3. execute and fetch the resulting HTML output
$output = curl_exec($ch);

// 4. free up the curl handle
curl_close($ch);

Langkah #2 (yaitu panggilan curl_setopt()) akan menjadi bagian besar dari artikel ini, karena itu adalah di mana semua keajaiban terjadi. Ada daftar panjang dari pilihan cURL yang dapat diatur, yang dapat mengkonfigurasi permintaan URL secara rinci. Mungkin sulit untuk melewati keseluruhan daftar dan mencerna semuanya sekaligus. Jadi hari ini, kita hanya akan menggunakan beberapa pilihan yang lebih umum dan yang berguna dalam berbagai contoh kode.

Memeriksa Kesalahan

Secara opsional, Anda juga dapat menambahkan pengecekan error:

// ...

$output = curl_exec($ch);

if ($output === FALSE) {

  echo "cURL Error: " . curl_error($ch);

}

// ...

Harap dicatat bahwa kita perlu menggunakan "=== FALSE" untuk perbandingan, bukan "== FALSE". Karena kita perlu membedakan antara keluaran kosong vs. nilai boolean FALSE, yang menunjukkan sebuah kesalahan.

Mendapatkan Informasi

Langkah opsional yang lain adalah untuk mendapatkan informasi tentang permintaan cURL, setelah dijalankan.

// ...

curl_exec($ch);

$info = curl_getinfo($ch);

echo 'Took ' . $info['total_time'] . ' seconds for url ' . $info['url'];

// ...

Informasi berikut ini termasuk dalam array yang dikembalikan:

  • "url"
  • "content_type"
  • "http_code"
  • "header_size"
  • "request_size"
  • "filetime"
  • "ssl_verify_result"
  • "redirect_count"
  • "total_time"
  • "namelookup_time"
  • "connect_time"
  • "pretransfer_time"
  • "size_upload"
  • "size_download"
  • "speed_download"
  • "speed_upload"
  • "download_content_length"
  • "upload_content_length"
  • "starttransfer_time"
  • "redirect_time"

Mendeteksi Pengalihan Berdasarkan pada Browser

Dalam contoh pertama ini, kita akan menulis sebuah skrip yang dapat mendeteksi pengalihan URL berdasarkan pada berbagai pengaturan browser. Misalnya, beberapa situs mengalihkan browser ponsel, atau bahkan peselancar dari negara yang berbeda.

Kita akan menggunakan opsi CURLOPT_HTTPHEADER untuk menentukan HTTP Headers yang keluar termasuk user agent string dan bahasa yang diterima. Akhirnya kita akan memeriksa untuk melihat apakah situs-situs ini berusaha untuk mengarahkan kita ke URL yang berbeda.

// test URLs
$urls = array(
	"http://www.cnn.com",
	"http://www.mozilla.com",
	"http://www.facebook.com"
);
// test browsers
$browsers = array(

	"standard" => array (
		"user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)",
		"language" => "en-us,en;q=0.5"
		),

	"iphone" => array (
		"user_agent" => "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A537a Safari/419.3",
		"language" => "en"
		),

	"french" => array (
		"user_agent" => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)",
		"language" => "fr,fr-FR;q=0.5"
		)

);

foreach ($urls as $url) {

	echo "URL: $url\n";

	foreach ($browsers as $test_name => $browser) {

		$ch = curl_init();

		// set url
		curl_setopt($ch, CURLOPT_URL, $url);

		// set browser specific headers
		curl_setopt($ch, CURLOPT_HTTPHEADER, array(
				"User-Agent: {$browser['user_agent']}",
				"Accept-Language: {$browser['language']}"
			));

		// we don't want the page contents
		curl_setopt($ch, CURLOPT_NOBODY, 1);

		// we need the HTTP Header returned
		curl_setopt($ch, CURLOPT_HEADER, 1);

		// return the results instead of outputting it
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

		$output = curl_exec($ch);

		curl_close($ch);

		// was there a redirection HTTP header?
		if (preg_match("!Location: (.*)!", $output, $matches)) {

			echo "$test_name: redirects to $matches[1]\n";

		} else {

			echo "$test_name: no redirection\n";

		}

	}
	echo "\n\n";
}

Pertama kita harus mengatur URL untuk menguji, diikuti oleh serangkaian pengaturan browser untuk menguji masing-masing URL tersebut terhadapnya. Kemudian kita loop melalui uji kasus dan membuat permintaan cURL untuk masing-masing.

Karena cara pengaturan opsi cURL, output yang dikembalikan hanya akan berisi HTTP headers (disimpan di $output). Dengan regex sederhana, kita bisa melihat jika ada header "Location:" disertakan.

Ketika Anda menjalankan skrip ini, Anda harus mendapatkan output seperti ini:

Cara menggunakan php curl example
Cara menggunakan php curl example
Cara menggunakan php curl example

Melakukan POST ke URL

Pada sebuah permintaan GET, data dapat dikirim ke URL melalui "query string". Sebagai contoh, ketika Anda melakukan pencarian di Google, istilah pencarian berlokasi di bagian query string dari URL:

http://www.google.com/search?q=nettuts

Anda mungkin tidak perlu cURL untuk mensimulasikannya di skrip web. Anda bisa menjadi malas dan mendapatkan url tersebut dengan "file_get_contents()" untuk menerima hasilnya.

Tapi beberapa form HTML ditetapkan untuk metode POST. Bila form ini dikirimkan melalui browser, data dikirim melalui body HTTP Request, bukan query string. Misalnya, jika Anda melakukan pencarian pada forum CodeIgniter, Anda akan mem-POST permintaan pencarian Anda ke:

http://codeigniter.com/forums/do_search/

Kita dapat menulis skrip PHP untuk mensimulasikan jenis permintaan URL ini. Pertama mari kita buat file untuk menerima dan menampilkan data POST. Mari kita sebut post_output.php:

print_r($_POST);

Selanjutnya kita membuat skrip PHP untuk melakukan permintaan cURL:

$url = "http://localhost/post_output.php";

$post_data = array (
	"foo" => "bar",
	"query" => "Nettuts",
	"action" => "Submit"
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// we are doing a POST request
curl_setopt($ch, CURLOPT_POST, 1);
// adding the post variables to the request
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$output = curl_exec($ch);

curl_close($ch);

echo $output;

Ketika Anda menjalankan skrip ini, Anda harus mendapatkan output seperti ini:

Cara menggunakan php curl example

Ia mengirim POST ke skrip post_output.php, yang dibuang variabel $_POST, dan kami menangkap output-nya melalui cURL.

Upload File

Meng-upload file bekerja sangat mirip dengan contoh POST sebelumnya, karena semua form upload file memiliki metode POST.

Pertama-tama mari kita buat file untuk menerima permintaan tersebut dan menyebutnya upload_output.php:

print_r($_FILES);

Dan berikut adalah skrip yang sebenarnya melakukan upload file:

$url = "http://localhost/upload_output.php";

$post_data = array (
	"foo" => "bar",
	// file to be uploaded
	"upload" => "@C:/wamp/www/test.zip"
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$output = curl_exec($ch);

curl_close($ch);

echo $output;

Bila Anda ingin meng-upload sebuah file, semua yang harus Anda lakukan adalah menyampaikan path file seperti variabel posting, dan menempatkan simbol @ di depannya. Sekarang ketika Anda menjalankan skrip ini, Anda harus mendapatkan output seperti ini:

Cara menggunakan php curl example
Cara menggunakan php curl example
Cara menggunakan php curl example

Multi cURL

Salah satu fitur yang lebih canggih dari cURL adalah kemampuan untuk menciptakan sebuah handle "multi" cURL. Hal ini memungkinkan Anda untuk membuka koneksi ke beberapa URL secara bersamaan dan asinkron.

Pada permintaan cURL regular, eksekusi skrip akan berhenti dan menunggu permintaan URL untuk menyelesaikan sebelum dapat melanjutkan. Jika Anda berniat untuk mendapatkan beberapa URL, ini dapat memakan waktu yang lama, karena Anda hanya dapat meminta satu URL pada satu waktu. Kita dapat mengatasi keterbatasan ini dengan menggunakan handle multi.

Mari kita lihat pada contoh kode dari php.net:

// create both cURL resources
$ch2 = curl_init();
$ch2 = curl_init();

// set URL and other appropriate options
curl_setopt($ch2, CURLOPT_URL, "http://lxr.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);

//create the multiple cURL handle
$mh = curl_multi_init();

//add the two handles
curl_multi_add_handle($mh,$ch2);
curl_multi_add_handle($mh,$ch2);

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

//close the handles
curl_multi_remove_handle($mh, $ch2);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

Idenya adalah Anda dapat membuka beberapa handle cURL dan menetapkan mereka ke handle multi tunggal. Kemudian Anda dapat menunggu mereka untuk menyelesaikan mengeksekusi sementara berada di loop.

Ada dua loop utama dalam contoh ini. Pertama loop do-while berulang kali memanggil curl_multi_exec(). Fungsi ini adalah non-blocking. Ia mengeksekusi sesedikit mungkin dan mengembalikan nilai status. Selama nilai yang dikembalikan adalah konstan 'CURLM_CALL_MULTI_PERFORM', itu berarti bahwa ada pekerjaan yang masih harus dilakukan (misalnya, mengirimkan http headers ke URL.) Itu sebabnya kami terus memanggilnya sampai nilai yang dikembalikan adalah sesuatu yang lain.

Dalam loop while berikut, kita terus melanjutkan selama variabel $active adalah 'true'. Ini disampaikan sebagai argumen kedua ke panggilan curl_multi_exec(). Ini sudah diatur untuk 'true' selama ada koneksi aktif dalam handle multi. Hal berikutnya yang kita lakukan adalah memanggil curl_multi_select(). Fungsi ini adalah 'memblokir' sampai ada aktivitas koneksi, seperti menerima respon. Ketika itu terjadi, kita pergi ke lain loop do-while lainnya untuk melanjutkan mengeksekusi.

Mari kita lihat jika kita dapat membuat contoh yang bekerja milik kita sendiri, yang memiliki tujuan praktis.

Bayangkan sebuah blog dengan banyak posting yang berisi link ke situs web eksternal. Beberapa dari link ini mungkin akhirnya mati setelah beberapa saat untuk berbagai alasan. Mungkin halaman sudah tidak ada lagi, atau seluruh situs web hilang.

Kita akan membangun sebuah skrip yang menganalisis semua link dan menemukan situs non-loading dan halaman 404 dan mengembalikan laporan ke kita.

Catat bahwa ini tidak akan menjadi plug-in Wordpress yang sebenarnya. Itu hanya sebuah skrip utilitas yang berdiri sendiri, dan ini adalah hanya untuk tujuan demonstrasi.

Jadi mari kita mulai. Pertama kita perlu untuk mengambil link dari database:

// CONFIG
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'wordpress';
$excluded_domains = array(
	'localhost', 'www.mydomain.com');
$max_connections = 10;
// initialize some variables
$url_list = array();
$working_urls = array();
$dead_urls = array();
$not_found_urls = array();
$active = null;

// connect to MySQL
if (!mysql_connect($db_host, $db_user, $db_pass)) {
	die('Could not connect: ' . mysql_error());
}
if (!mysql_select_db($db_name)) {
	die('Could not select db: ' . mysql_error());
}


// get all published posts that have links
$q = "SELECT post_content FROM wp_posts
	WHERE post_content LIKE '%href=%'
	AND post_status = 'publish'
	AND post_type = 'post'";
$r = mysql_query($q) or die(mysql_error());
while ($d = mysql_fetch_assoc($r)) {

	// get all links via regex
	if (preg_match_all("!href=\"(.*?)\"!", $d['post_content'], $matches)) {

		foreach ($matches[1] as $url) {

			// exclude some domains
			$tmp = parse_url($url);
			if (in_array($tmp['host'], $excluded_domains)) {
				continue;
			}

			// store the url
			$url_list []= $url;
		}
	}
}

// remove duplicates
$url_list = array_values(array_unique($url_list));

if (!$url_list) {
	die('No URL to check');
}

Pertama kami memiliki beberapa konfigurasi database, diikuti oleh sebuah array dari nama domain akan kita abaikan ($excluded_domains). Juga kita menetapkan jumlah koneksi simultan maksimum kita akan menggunakannya nanti ($max_connections). Kemudian kita terhubung ke database, mengambil posting yang berisi link, dan mengumpulkannya ke dalam sebuah array ($url_list).

Kode berikut mungkin sedikit kompleks, jadi saya akan mencoba untuk menjelaskan dalam langkah-langkah kecil.

// 1. multi handle
$mh = curl_multi_init();

// 2. add multiple URLs to the multi handle
for ($i = 0; $i < $max_connections; $i++) {
	add_url_to_multi_handle($mh, $url_list);
}

// 3. initial execution
do {
	$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

// 4. main loop
while ($active && $mrc == CURLM_OK) {

	// 5. there is activity
	if (curl_multi_select($mh) != -1) {

		// 6. do work
		do {
			$mrc = curl_multi_exec($mh, $active);
		} while ($mrc == CURLM_CALL_MULTI_PERFORM);

		// 7. is there info?
		if ($mhinfo = curl_multi_info_read($mh)) {
			// this means one of the requests were finished

			// 8. get the info on the curl handle
			$chinfo = curl_getinfo($mhinfo['handle']);

			// 9. dead link?
			if (!$chinfo['http_code']) {
				$dead_urls []= $chinfo['url'];

			// 10. 404?
			} else if ($chinfo['http_code'] == 404) {
				$not_found_urls []= $chinfo['url'];

			// 11. working
			} else {
				$working_urls []= $chinfo['url'];
			}

			// 12. remove the handle
			curl_multi_remove_handle($mh, $mhinfo['handle']);
			curl_close($mhinfo['handle']);

			// 13. add a new url and do work
			if (add_url_to_multi_handle($mh, $url_list)) {

				do {
					$mrc = curl_multi_exec($mh, $active);
				} while ($mrc == CURLM_CALL_MULTI_PERFORM);
			}
		}
	}
}

// 14. finished
curl_multi_close($mh);

echo "==Dead URLs==\n";
echo implode("\n",$dead_urls) . "\n\n";

echo "==404 URLs==\n";
echo implode("\n",$not_found_urls) . "\n\n";

echo "==Working URLs==\n";
echo implode("\n",$working_urls);

// 15. adds a url to the multi handle
function add_url_to_multi_handle($mh, $url_list) {
	static $index = 0;

	// if we have another url to get
	if ($url_list[$index]) {

		// new curl handle
		$ch = curl_init();

		// set the url
		curl_setopt($ch, CURLOPT_URL, $url_list[$index]);
		// to prevent the response from being outputted
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		// follow redirections
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		// do not need the body. this saves bandwidth and time
		curl_setopt($ch, CURLOPT_NOBODY, 1);

		// add it to the multi handle
		curl_multi_add_handle($mh, $ch);


		// increment so next url is used next time
		$index++;

		return true;
	} else {

		// we are done adding new URLs
		return false;
	}
}

Dan berikut ini adalah penjelasan untuk kode di atas. Angka-angka dalam daftar sesuai dengan angka-angka dalam komentar kode.

  1. Membuat handle multi.
  2. Kita akan membuat fungsi add_url_to_multi_handle() kemudian. Setiap kali ia dipanggil, ia akan menambahkan url ke handle multi. Awalnya, kita tambahkan 10 (berdasarkan $max_connections) URL untuk handle multi.
  3. Kita harus menjalankan curl_multi_exec() untuk pekerjaan awal. Selama itu mengembalikan CURLM_CALL_MULTI_PERFORM, ada pekerjaan yang harus dilakukan. Hal ini terutama untuk membuat koneksi. Ia tidak menunggu respon URL sepenuhnya.
  4. Loop utama ini berjalan selama ada beberapa kegiatan di handle multi.
  5. curl_multi_select() menunggu skrip sampai suatu kegiatan terjadi dengan permintaan URL.
  6. Lagi-lagi kita harus membiarkan cURL melakukan beberapa pekerjaan, terutama untuk pengambilan data respon.
  7. Kita memeriksa untuk info. Ada sebuah array yang dikembalikan jika permintaan URL selesai.
  8. Ada handle cURL dalam array yang dikembalikan. Kita menggunakannya untuk mengambil info pada permintaan cURL individu.
  9. Jika link mati atau habis jangka waktunya, tidak akan ada code http.
  10. Jika link adalah halaman 404, kode http akan ditetapkan ke 404.
  11. Jika tidak kita menganggap itu adalah link yang bekerja. (Anda dapat menambahkan pemeriksaan tambahan untuk kode kesalahan 500 dll...)
  12. Kami menghapus handle cURL dari handle multi sejak itu tidak lagi diperlukan, dan menutupnya.
  13. Kita sekarang dapat menambahkan url lain ke handle multi, dan lagi-lagi melakukan pekerjaan awal sebelum berpindah.
  14. Semuanya selesai. Kita dapat menutup handle multi dan mencetak laporan.
  15. Ini adalah fungsi yang menambahkan url baru ke handle multi. Variabel statis $index adalah bertambah setiap kali fungsi ini dipanggil, sehingga kami dapat terus melacak apa yang kami tinggalkan.

Saya menjalankan skrip pada blog saya (dengan beberapa link yang rusak yanng ditambahkan dengan sengaja, untuk pengujian), dan di sini adalah apa yang tampak:

Cara menggunakan php curl example
Cara menggunakan php curl example
Cara menggunakan php curl example

Butuh hanya kurang dari 2 detik untuk melewati sekitar 40 URL. Kinerja keuntungan yang signifikan ketika berhadapan dengan set URL yang lebih besar. Jika Anda membuka sepuluh koneksi pada saat yang sama, ini dapat berjalan hingga sepuluh kali lebih cepat. Juga, Anda hanya dapat menggunakan sifat non-blocking dari handle multi cURL agar melakukan permintaan URL tanpa mengulur-ulur skrip web Anda.

Beberapa Opsi cURL Berguna Lainnya

HTTP Authentication

Jika ada otentikasi HTTP berbasis pada URL, Anda dapat menggunakan ini:

$url = "http://www.somesite.com/members/";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// send the username and password
curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword");

// if you allow redirections
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
// this lets cURL keep sending the username and password
// after being redirected
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1);

$output = curl_exec($ch);

curl_close($ch);

FTP Upload

PHP memiliki library FTP, tetapi Anda juga dapat menggunakan cURL:

// open a file pointer
$file = fopen("/path/to/file", "r");

// the url contains most of the info needed
$url = "ftp://username::21/path/to/new/file";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// upload related options
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("/path/to/file"));

// set for ASCII mode (e.g. text files)
curl_setopt($ch, CURLOPT_FTPASCII, 1);

$output = curl_exec($ch);
curl_close($ch);

Menggunakan Proxy

Anda dapat melakukan permintaan URL Anda melalui proxy:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,'http://www.example.com');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// set the proxy address to use
curl_setopt($ch, CURLOPT_PROXY, '11.11.11.11:8080');

// if the proxy requires a username and password
curl_setopt($ch, CURLOPT_PROXYUSERPWD,'user:pass');

$output = curl_exec($ch);

curl_close ($ch);

Fungsi Callback

Ada kemungkinan untuk meminta panggilan cURL melalui fungsi callback selama permintaan URL, sebelum ia selesai. Misalnya, karena isi dari respon sedang didownload, Anda bisa mulai menggunakan datanya, tanpa menunggu keseluruhan download selesai.

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,'http://net.tutsplus.com');

curl_setopt($ch, CURLOPT_WRITEFUNCTION,"progress_function");

curl_exec($ch);

curl_close ($ch);


function progress_function($ch,$str) {

	echo $str;
	return strlen($str);

}

Fungsi callback HARUS mengembalikan panjang string, yang merupakan syarat agar bekerja dengan benar.

Ketika respon URL sedang diambil, setiap kali sebuah paket data diterima, fungsi callback dipanggil.

Kesimpulan

Kami telah menjelajahi kekuatan dan fleksibilitas dari library cURL hari ini. Saya harap Anda menikmati dan belajar dari artikel ini. Pada waktu berikutnya Anda perlu membuat permintaan URL dalam aplikasi web Anda, pertimbangkan untuk menggunakan cURL.

Terima kasih dan miliki hari yang menyenangkan!

Apakah Anda tahu bahwa Anda bisa mendapatkan hingga $600 untuk menulis tutorial PLUS dan/atau screencast untuk kami? Kami sedang mencari tutorial mendalam dan yang ditulis dengan baik tentang HTML, CSS, PHP, dan JavaScript. Jika Anda memiliki kemampuan tersebut, silakan hubungi Jeffrey di .

Harap dicatat bahwa kompensasi yang sebenarnya akan tergantung pada kualitas akhir dari tutorial dan screencast.

Cara menggunakan php curl example

  • Ikuti kami di Twitter, atau berlangganan ke Nettuts+ RSS Feed untuk tutorial pengembangan web terbaik di web.

Apa itu PHP cURL?

Client URL atau umumnya disingkat menjadi cURL, adalah project open source yang berupa program yang berjalan pada command line (CMD), namun saat ini sudah tersedia library pada banyak bahasa pemrograman seperti PHP, Phyton, dan masih banyak lainya.

Jelaskan 4 langkah mendasar menggunakan cURL di PHP pada penerapan pembuatan webservice REST Client?

Ada 4 langkah penggunaan Curl di PHP:.
Inisialisasi;.
Set Option;.
Eksekusi Curl;.
Tutup Curl;.

Apa itu Curl_setopt?

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); Set Option pada cURL yang berfungsi untuk mengembalikan transfer menjadi bentuk String. Script cURL diatas bertujuan untuk menampilkan isi halaman dari URL https://sandbox.