Hướng dẫn dùng curl -o trong PHP

cURL là một command line tool và thư viện được sử dụng để truyền dữ liệu thông qua nhiều giao thức khác nhau (như HTTP, HTTPS, FTP, FTPS, SCP, SFTP, FILE, IMAP, SMTP, POP3, RTSP và RTMP…). Được đời từ năm 1997 viết bởi Daniel Stenberg viết bằng C. Với giao thức HTTP, cURL hỗ trợ việc gửi đi một request với tất cả các phương thức hiện có như GET, POST, PUT, DELETE…

Cơ bản về sử dụng cURL PHP

Với giao thức HTTP, cURL hỗ trợ việc gửi đi một request với tất cả các phương thức hiện có như GET, POST, PUT, DELETE…Trong PHP có cung cấp các API để làm việc với thư viện này với các chức năng khá đầy đủ cURL PHP.

cURL có hỗ trợ việc truyền dữ liệu qua giao thức HTTPS. Ta có thể dùng cURL trong Php để GET và POST dữ liệu, truy cập REST API service có kết hợp với JSON hoặc xác thực OAUTH.

Hướng dẫn dùng curl -o trong PHP

Khi sử dụng cURL thường có 3 bước cơ bản:

  1. Khởi tạo cURL
  2. Cấu hình tham số cho cURL
  3. Thực thi cURL
  4. Ngắt cURL, giải phóng dữ liệu
$ch = curl_init(); //khai báo curl
curl_setopt($ch, CURLOPT_URL,"https://topdev.vn"); // xác định địa chỉ cần thực thi
curl_setopt($ch, CURLOPT_POST, 1); // POST
// và các tham số khác ... dùng curl_setopt để dịnh giá trị cho mỗi tham số.
curl_exec ($ch); // thực thi curl
curl_close ($ch); // đóng curl để giải phóng vùng nhớ
?>

Thiết lập cURL

Bạn có thể cấu hình thêm một hoặc nhiều option nữa cho curl bằng curl_setopt. Các curl_setopt này phải được đặt trước curl_exec thì mới có hiệu lực. Đây là một hàm quan trọng trong cURL để xử lí các dữ liệu vào:

  • CURLOPT_RETURNTRANSFER: TRUE để curl_exec() trả về chuỗi chứ không xuất thẳng ra màn hình.
  • CURLOPT_CONNECTTIMEOUT: Thời gian cho phép cURL cố gắng kết nối (giây), 0 vô tận
  • CURLOPT_USERAGENT: Nội dung của dòng User-Agent: trong header của HTTP khi gửi yêu cầu
  • CURLOPT_URL: URL mà cURL gửi yêu cầu
  • CURLOPT_POST: TRUE – Thiết lập yêu cẩu gửi theo phương thức POST
  • CURLOPT_POSTFIELDS: Mảng dữ liệu để POST

Bạn có thi hành nhiều thiết lập một lúc bằng hàm curl_setopt_array():

//Dữ liệu để POST
$data = array(
    'name' = 'TopDev',
    'data' = array(1,2,3,4),
    'value' = 'Viec Lam IT'
);

//Có thể phải dùng thêm hàm chuyển tham số mảng thành chuỗi URL encode
//$data = http_build_query($data) nếu POST

$curl = curl_init();
$options = array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'https://topdev.vn/api/',
    CURLOPT_POST => true,
    CURLOPT_USERAGENT => "Safari/8.0",
    CURLOPT_POSTFIELDS => $data
 );
curl_setopt_array($curl, $options);

Gửi request với cURL

Tạo tài nguyên cURL và thiết lập xong như trên, ta tiến hành gửi request với cURL bằng hàm curl_exec(). Kết quả trả về false hoặc true và giá trị là chuỗi trả về khi CURLOPT_RETURNTRANSFER thiết lập true.

$curl = curl_init();
// code khác
$result = curl_exec($curl);
if ($result === FALSE) {
    echo "CCURL Error";
} else {
    //Succeess!, kết quả trong $result
}

$result trả về có thể là JSON, string…

Sau khi gửi yêu cầu thành công, nhận hết giá trị trả về bạn cần đóng CCURL bằng hàm curl_close($curl);

Ví dụ sử dụng cURL GET dữ liệu từ JSON

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 0,
    CURLOPT_URL => 'https://topdev.vn/blog/json/v1/',
    CURLOPT_USERAGENT => 'TopDev Test Api',
    CURLOPT_SSL_VERIFYPEER => false
));

$resp = curl_exec($curl);

//Dữ liệu ở dạng JSON
$data = json_decode($resp);
var_dump($data);

curl_close($curl);
  • Đánh giá điểm mạnh và điểm yếu của Php
  • 10 PHP Instagram Scripts & Widgets tốt nhất
  • Hàm json_encode và json_decode trong PHP
  • 10 Frameworks tốt nhất hiện nay cho PHP
  • Sử dụng mảng đúng cách trong PHP
  • 10 điều bạn cần biết về PHP7

CURL là thuật ngữ thường xuyên được nhắc hiện nay. Vậy CURL là gì và sử dụng như thế nào? Trong bài này mình sẽ giải thích Curl là gì ? và ví dụ cho các bạn dễ hiểu hơn về sử dụng curl trong PHP

Định nghĩ Curl

CURL là bộ thư viện được sử dụng để giúp thực hiện việc chuyển dữ liệu thông qua nhiều giao thức khác nhau (như HTTP, FPT...).

Với giao thức HTTP, cURL hỗ trợ việc gửi dữ liệu sử dụng tất cả các phương thức hiện có như GET, POST, PUT, DELETE... cURL cũng hỗ trợ việc chuyền dữ liệu sử dụng giao thức HTTPS.

Ngoài ra, chúng ta cũng có thể thực hiện việc xác thực request gửi đi thông qua cURL. Việc xác thực có thể được thực hiện thông qua việc thiết lập header cho request hoặc sử dụng cookies...

Cách sử dụng CURL trong PHP

Một ứng dụng CURL thường có 3 bước cơ bản:

  • Bước 1: Khởi tạo CURL
  • Bước 2: Cấu hình thông số cho CURL
  • Bước 3: Thực thi CURL
  • Bước 4: Ngắt CURL, giải phóng dữ liệu
// Tạo mới một CURL
$ch = curl_init();

// Cấu hình cho CURL
curl_setopt($ch, CURLOPT_URL, "https://hoclaptrinh.vn");

 // Thực thi CURL
curl_exec($ch);

// Ngắt CURL, giải phóng
curl_close($ch);

Trong phần cấu hình, chúng ta đặc biệt chú ý đến lệnh curl_setopt(1,2,3);

Đây là một hàm quan trọng trong CURL để xử lí các dữ liệu vào.

Curl_setopt(1,2,3) có 3 tham số đầu vào:

  • 1 là đối tượng CURL
  • 2 là tên cấu hình
  • 3 là giá trị Một số tên cấu hình thông dụng với CURL:

CURLOPT_URL: đường dẫn tới URL cần xử lý

CURLOPT_RETURNTRANSFER: nếu true thì sẽ trả kết quả về ở hàm curl_exec nên ta phải echo kết quả đó mới in lên trình duyệt, nếu false thì thực thi là nó in kết quả lên trình duyệt luôn

CURLOPT_USERAGENT: Dùng để giả lập đang gửi ở trình duyệt nào (user agent)

CURLOPT_TIMEOUT: Thiết lập thời gian sống của một request CURL

CURLOPT_FILE: Lưu kết quả vào file

CURLOPT_POSTFIELDS: giá trị của nó chính là một mảng các key => value, tương ứng với name và value của nó trong các thẻ input khi submit FORM ….. Ngoài ra còn có rất nhiều Option với các value khác nữa đối với hàm CURL_setopt