Di PHP, saya melihat kata cURL di banyak proyek PHP. Apa itu? Bagaimana cara kerjanya?
Referensi Tautan: cURL
Di PHP, saya melihat kata cURL di banyak proyek PHP. Apa itu? Bagaimana cara kerjanya?
Referensi Tautan: cURL
Jawaban:
cURL adalah pustaka yang memungkinkan Anda membuat permintaan HTTP dalam PHP. Semua yang perlu Anda ketahui tentang hal ini (dan sebagian besar ekstensi lainnya) dapat ditemukan di manual PHP .
Untuk menggunakan fungsi PHP CURL Anda harus menginstal paket »libcurl. PHP mengharuskan Anda menggunakan libcurl 7.0.2-beta atau lebih tinggi. Di PHP 4.2.3, Anda akan memerlukan libcurl versi 7.9.0 atau lebih tinggi. Dari PHP 4.3.0, Anda membutuhkan versi libcurl yang 7.9.8 atau lebih tinggi. PHP 5.0.0 membutuhkan libcurl versi 7.10.5 atau lebih tinggi.
Anda dapat membuat permintaan HTTP tanpa cURL, meskipun allow_url_fopen
harus diaktifkan di php.ini
file Anda .
// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');
cURL adalah cara Anda dapat menekan URL dari kode Anda untuk mendapatkan respons html darinya. cURL berarti URL klien yang memungkinkan Anda terhubung dengan URL lain dan menggunakan tanggapan mereka dalam kode Anda.
Ringkasan:
The curl_exec
perintah dalam PHP adalah jembatan untuk menggunakan curl
dari konsol. curl_exec membuatnya mudah melakukan permintaan GET / POST dengan cepat dan mudah, menerima respons dari server lain seperti JSON dan mengunduh file.
Peringatan, Bahaya:
curl
jahat dan berbahaya jika digunakan secara tidak benar karena ini adalah tentang mendapatkan data dari luar sana di internet. Seseorang bisa mendapatkan antara ikal Anda dan server lain dan menyuntikkan rm -rf /
respons Anda, lalu mengapa saya turun ke konsol dan ls -l
bahkan tidak berfungsi lagi? Karena Anda salah menilai kekuatan curl yang berbahaya. Jangan percaya apa pun yang kembali dari curl menjadi aman, bahkan jika Anda berbicara dengan server Anda sendiri. Anda bisa menarik kembali malware untuk meringankan orang bodoh dari kekayaan mereka.
Ini dilakukan di Ubuntu 12.10
Keriting dasar dari baris perintah:
el@apollo:/home/el$ curl http://i.imgur.com/4rBHtSm.gif > mycat.gif
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 492k 100 492k 0 0 1077k 0 --:--:-- --:--:-- --:--:-- 1240k
Kemudian Anda bisa membuka gif Anda di firefox:
firefox mycat.gif
Kucing yang mulia berevolusi Toxoplasma gondii untuk menyebabkan wanita memelihara kucing dan pria juga memelihara wanita.
contoh CURL dapatkan permintaan untuk menekan google.com, gema ke baris perintah:
Ini dilakukan melalui terminal phpsh:
php> $ch = curl_init();
php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
php> curl_exec($ch);
Yang mencetak dan membuang kekacauan html dan javascript kental (dari google) ke konsol.
Contoh CURL menempatkan teks respons ke dalam variabel:
Ini dilakukan melalui terminal phpsh:
php> $ch = curl_init();
php> curl_setopt($ch, CURLOPT_URL, 'http://i.imgur.com/wtQ6yZR.gif');
php> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
php> $contents = curl_exec($ch);
php> echo $contents;
Variabel sekarang berisi biner yang merupakan gif animasi kucing, kemungkinan tidak terbatas.
Lakukan ikal dari dalam file PHP:
Masukkan kode ini dalam file bernama myphp.php:
<?php
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'http://www.google.com');
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($buffer)){
print "Nothing returned from url.<p>";
}
else{
print $buffer;
}
?>
Kemudian jalankan melalui commandline:
php < myphp.php
Anda menjalankan myphp.php dan menjalankan perintah-perintah itu melalui penerjemah php dan membuang satu ton html dan javascript yang berantakan ke layar.
Anda dapat melakukan GET
dan POST
meminta dengan curl, yang Anda lakukan hanyalah menentukan parameter seperti yang didefinisikan di sini: Menggunakan curl untuk mengotomatiskan pekerjaan HTTP
Pengingat bahaya:
Berhati-hatilah saat membuang hasil ikal, jika ada yang ditafsirkan dan dieksekusi, kotak Anda dimiliki dan info kartu kredit Anda akan dijual kepada pihak ketiga dan Anda akan mendapatkan tagihan $ 900 misterius dari perusahaan lantai satu orang Alabama yang merupakan depan untuk cincin kejahatan penipuan kartu kredit luar negeri.
cURL adalah cara Anda dapat menekan URL dari kode Anda untuk mendapatkan respons HTML darinya. Ini digunakan untuk baris perintah cURL dari bahasa PHP.
<?php
// Step 1
$cSession = curl_init();
// Step 2
curl_setopt($cSession,CURLOPT_URL,"http://www.google.com/search?q=curl");
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession,CURLOPT_HEADER, false);
// Step 3
$result=curl_exec($cSession);
// Step 4
curl_close($cSession);
// Step 5
echo $result;
?>
Langkah 1: Inisialisasi sesi keriting menggunakan curl_init()
.
Langkah 2: Tetapkan opsi untuk CURLOPT_URL
. Nilai ini adalah URL yang kami kirimi permintaan. Tambahkan istilah pencarian curl
menggunakan parameter q=
. Tetapkan opsi untuk CURLOPT_RETURNTRANSFER
. True akan memberi tahu curl untuk mengembalikan string alih-alih mencetaknya. Setel opsi untuk CURLOPT_HEADER
, false akan memberi tahu curl untuk mengabaikan header di nilai balik.
Langkah 3: Jalankan sesi keriting menggunakan curl_exec()
.
Langkah 4: Tutup sesi keriting yang telah kita buat.
Langkah 5: Keluarkan string kembali.
public function curlCall($apiurl, $auth, $rflag)
{
$ch = curl_init($apiurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($auth == 'auth') {
curl_setopt($ch, CURLOPT_USERPWD, "passw:passw");
} else {
curl_setopt($ch, CURLOPT_USERPWD, "ss:ss1");
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$dt = curl_exec($ch);
curl_close($ch);
if($rflag != 1) {
$dt = json_decode($dt,true);
}
return $dt;
}
Ini juga digunakan untuk otentikasi. Kami juga dapat mengatur nama pengguna dan kata sandi untuk otentikasi.
Untuk fungsionalitas lainnya, lihat panduan pengguna atau tutorial berikut:
http://php.net/manual/en/ref.curl.php
http://www.startutorial.com/articles/view/php-curl
Pertama mari kita memahami konsep curl, libcurl dan PHP / cURL.
curl : Alat baris perintah untuk mendapatkan atau mengirim file menggunakan sintaks URL.
libcurl : perpustakaan yang dibuat oleh Daniel Stenberg, yang memungkinkan Anda untuk terhubung dan berkomunikasi ke berbagai jenis server dengan berbagai jenis protokol. libcurl saat ini mendukung protokol http, https, ftp, gopher, telnet, dict, file, dan ldap. libcurl juga mendukung sertifikat HTTPS, HTTP POST, HTTP PUT, unggah FTP (ini juga dapat dilakukan dengan ekstensi ftp PHP), unggahan berbasis formulir HTTP, proksi, cookie, dan otentikasi pengguna + kata sandi.
PHP / cURL : Modul untuk PHP yang memungkinkan program PHP untuk menggunakan libcurl.
Bagaimana cara menggunakannya:
langkah1 : Inisialisasi sesi curl gunakan curl_init ().
Langkah 2 : Tetapkan opsi untuk CURLOPT_URL. Nilai ini adalah URL yang kami kirimi permintaan. Tambahkan istilah pencarian "curl" menggunakan parameter "q =". Tetapkan opsi CURLOPT_RETURNTRANSFER, true akan memberi tahu curl untuk mengembalikan string alih-alih mencetaknya. Setel opsi untuk CURLOPT_HEADER, false akan memberi tahu curl untuk mengabaikan header di nilai yang dikembalikan.
langkah3 : Jalankan sesi curl menggunakan curl_exec ().
step4 : Tutup sesi keriting yang telah kita buat.
step5 : string kembali.
Buat DEMO :
Anda harus membuat dua file PHP dan menempatkannya ke dalam folder tempat server web Anda dapat menyajikan file PHP. Dalam kasus saya, saya memasukkannya ke / var / www / untuk kesederhanaan.
1. helloservice.php dan 2. demo.php
helloservice.php sangat sederhana dan pada dasarnya hanya mengembalikan data yang didapatnya:
<?php
// Here is the data we will be sending to the service
$some_data = array(
'message' => 'Hello World',
'name' => 'Anand'
);
$curl = curl_init();
// You can also set the URL you want to communicate with by doing this:
// $curl = curl_init('http://localhost/echoservice');
// We POST the data
curl_setopt($curl, CURLOPT_POST, 1);
// Set the url path we want to call
curl_setopt($curl, CURLOPT_URL, 'http://localhost/demo.php');
// Make it so the data coming back is put into a string
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Insert the data
curl_setopt($curl, CURLOPT_POSTFIELDS, $some_data);
// You can also bunch the above commands into an array if you choose using: curl_setopt_array
// Send the request
$result = curl_exec($curl);
// Get some cURL session information back
$info = curl_getinfo($curl);
echo 'content type: ' . $info['content_type'] . '<br />';
echo 'http code: ' . $info['http_code'] . '<br />';
// Free up the resources $curl is using
curl_close($curl);
echo $result;
?>
2.demo.php , Anda dapat melihat hasilnya:
<?php
print_r($_POST);
//content type: text/html; charset=UTF-8
//http code: 200
//Array ( [message] => Hello World [name] => Anand )
?>
Ekstensi cURL ke PHP dirancang untuk memungkinkan Anda menggunakan berbagai sumber daya web dari dalam skrip PHP Anda.
cURL dalam PHP adalah jembatan untuk menggunakan command line cURL dari bahasa php
PHP mendukung libcurl, perpustakaan yang dibuat oleh Daniel Stenberg, yang memungkinkan Anda untuk terhubung dan berkomunikasi ke berbagai jenis server dengan berbagai jenis protokol. libcurl saat ini mendukung protokol http, https, ftp, gopher, telnet, dict, file, dan ldap. libcurl juga mendukung sertifikat HTTPS, HTTP POST, HTTP PUT, unggah FTP (ini juga dapat dilakukan dengan ekstensi ftp PHP), unggahan berbasis formulir HTTP, proksi, cookie, dan otentikasi pengguna + kata sandi.
Setelah mengkompilasi PHP dengan dukungan cURL, Anda dapat mulai menggunakan fungsi-fungsi cURL. Ide dasar di balik fungsi cURL adalah Anda menginisialisasi sesi cURL menggunakan curl_init (), maka Anda dapat mengatur semua opsi untuk transfer melalui curl_setopt (), kemudian Anda dapat menjalankan sesi dengan curl_exec () dan kemudian Anda selesaikan sesi Anda menggunakan curl_close ().
// error reporting
error_reporting(E_ALL);
ini_set("display_errors", 1);
//setting url
$url = 'http://example.com/api';
//data
$data = array("message" => "Hello World!!!");
try {
$ch = curl_init($url);
$data_string = json_encode($data);
if (FALSE === $ch)
throw new Exception('failed to initialize');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$output = curl_exec($ch);
if (FALSE === $output)
throw new Exception(curl_error($ch), curl_errno($ch));
// ...process $output now
} catch(Exception $e) {
trigger_error(sprintf(
'Curl failed with error #%d: %s',
$e->getCode(), $e->getMessage()),
E_USER_ERROR);
}
Curl tidak lain adalah perpanjangan dari PHP yang mewarisi perilaku perintah & pustaka ikal normal yang ditulis terutama untuk Linux / alat baris perintah Unix
Apa itu Curl? CURL adalah singkatan untuk URL Klien. CURL digunakan untuk mengirim data ke URL apa pun. Untuk detail lebih lanjut tentang apa sebenarnya ikal itu, Anda dapat mengunjungi Situs CURL
cURL dalam PHP Sekarang konsep yang sama diperkenalkan dalam PHP, untuk mengirim data ke URL yang dapat diakses melalui protokol yang berbeda, misalnya, HTTP atau FTP. Untuk lebih detail, Anda bisa merujuk ke Tutorial PHP Curl
Fungsi php curl (POST, GET, DELETE, PUT)
function curl($post = array(), $url, $token = '', $method = "POST", $json = false, $ssl = true){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
if($method == 'POST'){
curl_setopt($ch, CURLOPT_POST, 1);
}
if($json == true){
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json','Authorization: Bearer '.$token,'Content-Length: ' . strlen($post)));
}else{
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, 6);
if($ssl == false){
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
// curl_setopt($ch, CURLOPT_HEADER, 0);
$r = curl_exec($ch);
if (curl_error($ch)) {
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
print_r('Error: ' . $err . ' Status: ' . $statusCode);
// Add error
$this->error = $err;
}
curl_close($ch);
return $r;
}
Kelas ikal Php (DAPATKAN, POS, UPLOAD FILES, SESI, KIRIM POST JSON, FORCE SELFSIGNED SSL / TLS):
<?php
// Php curl class
class Curl {
public $error;
function __construct() {}
function Get($url = "http://hostname.x/api.php?q=jabadoo&txt=gin", $forceSsl = false,$cookie = "", $session = true){
// $url = $url . "?". http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$info = curl_getinfo($ch);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function GetArray($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
$url = $url . "?". http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$info = curl_getinfo($ch);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function PostJson($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
$data = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer helo29dasd8asd6asnav7ffa',
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
function Post($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $files = array('ads/ads0.jpg', 'ads/ads1.jpg'), $forceSsl = false, $cookie = "", $session = true){
foreach ($files as $k => $v) {
$f = realpath($v);
if(file_exists($f)){
$fc = new CurlFile($f, mime_content_type($f), basename($f));
$data["file[".$k."]"] = $fc;
}
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // !!!! required as of PHP 5.6.0 for files !!!
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if($session){
curl_setopt($ch, CURLOPT_COOKIESESSION, true );
curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
}
if($forceSsl){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
}
if(!empty($cookie)){
curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
}
$res = curl_exec($ch);
if (curl_error($ch)) {
$this->error = curl_error($ch);
throw new Exception($this->error);
}else{
curl_close($ch);
return $res;
}
}
}
?>
Contoh:
<?php
$urlget = "http://hostname.x/api.php?id=123&user=bax";
$url = "http://hostname.x/api.php";
$data = array("name" => "Max", "age" => "36");
$files = array('ads/ads0.jpg', 'ads/ads1.jpg');
$curl = new Curl();
echo $curl->Get($urlget, true, "token=12345");
echo $curl->GetArray($url, $data, true);
echo $curl->Post($url, $data, $files, true);
echo $curl->PostJson($url, $data, true);
?>
File php: api.php
<?php
/*
$Cookie = session_get_cookie_params();
print_r($Cookie);
*/
session_set_cookie_params(9000, '/', 'hostname.x', isset($_SERVER["HTTPS"]), true);
session_start();
$_SESSION['cnt']++;
echo "Session count: " . $_SESSION['cnt']. "\r\n";
echo $json = file_get_contents('php://input');
$arr = json_decode($json, true);
echo "<pre>";
if(!empty($json)){ print_r($arr); }
if(!empty($_GET)){ print_r($_GET); }
if(!empty($_POST)){ print_r($_POST); }
if(!empty($_FILES)){ print_r($_FILES); }
// request headers
print_r(getallheaders());
print_r(apache_response_headers());
// Fetch a list of headers to be sent.
// print_r(headers_list());
?>