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…
Trong bài viết này chúng ta sẽ tìm hiểu cURL được sử dụng trong ngôn ngữ PHP như thế nào.
khi sử dụng thư viện Để sử dụng các hàm cURL của PHP, bạn cần cài đặt gói »libcurl. PHP yêu cầu phiên bản libcurl 7.10.5 trở lên.
Để sử dụng hỗ trợ cURL của PHP, bạn cũng phải biên dịch PHP –with-curl [= DIR] trong đó DIR là vị trí của thư mục chứa lib và các thư mục bao gồm. Trong thư mục include nên có một thư mục tên là curl chứa các tệp easy.h và curl.h. Phải có một tệp có tên libcurl.a nằm trong thư mục lib. Trước PHP 5.5.0, có thể cấu hình PHP để sử dụng cURL cho các luồng URL –with-curlwrappers.
* Lưu ý: cho người dùng Win32 Để kích hoạt mô-đun này trên môi trường Windows, libeay32.dll và ssleay32.dll, hoặc như OpenSSL 1.1 libcrypto – *. Dll và libssl – *. Dll, phải có trong PATH của bạn. Ngoài ra libssh2.dll phải có trong PATH của bạn. Bạn không cần libcurl.dll từ trang cURL.
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, "http://codetutam.com/"); // 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:
Ví dụ sau sử dụng cURL PHP gọi theo phương thức GET lấy dữ liệu JSON .
<?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 0, CURLOPT_URL => 'http://codetutam.com/?s=solid', CURLOPT_USERAGENT => 'Dev đẹp trai test cURL Request', CURLOPT_SSL_VERIFYPEER => false )); $resp = curl_exec($curl); //Kết quả trả tìm kiếm trả về dạng JSON $weather = json_decode($resp); var_dump($weather); // dump kết quả curl_close($curl);
Ví dụ sau sử dụng dịch vụ chạy thử REST ở địa chỉ https://reqres.in/api/register để thử POST đăng nhập hệ thống. Thông tin đăng nhập gồm email và passowrd. Bạn chạy thử, thử thay cả email khác.
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => 'https://reqres.in/api/register', CURLOPT_USERAGENT => 'Dev đẹp trai Exmaple POST', CURLOPT_POST => 1, CURLOPT_SSL_VERIFYPEER => false, //Bỏ kiểm SSL CURLOPT_POSTFIELDS => http_build_query(array( 'email' => 'sydney@fife', 'password' => 'pistol' )) )); $resp = curl_exec($curl); var_dump($resp); curl_close($curl);
Rất nhiều dịch vụ Webservice ví dụ của Google, Facebook … sử dụng REST post JSON để làm việc, chứ không hẳn là POST kiểu như FORM HTML post lên, trong trường hợp này thực hiện các bước
Ví dụ:
$data = array("name" => "Hagrid", "age" => "36"); $data_string = json_encode($data); $curl = curl_init('http://example.api.com'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); $result = curl_exec($curl); curl_close($curl);
Với ba đoạn trên, bạn có thẩy lấy dữ liệu từ site khác đưa vào site đích một cách đơn giản. Ngoài ra bạn có thể sử dụng một số hàm sau cho mục đích nâng cao hơn.đặt một User-agent tùy biến ( giả tên trình duyệt một cách ngẫu nhiên-“random”)
function getRandomUserAgent() { $userAgents=array( "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)", "Opera/9.20 (Windows NT 6.0; U; en)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50", "Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]", "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; fr; rv:1.7) Gecko/20040624 Firefox/0.9", "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/48 (like Gecko) Safari/48" ); $random = rand(0,count($userAgents)-1); return $userAgents[$random]; }
Sau đó có thể dùng tiếp Option CURLOPT_USERAGENT để đặt trình duyệt giả
curl_setopt($ch,CURLOPT_USERAGENT,getRandomUserAgent());
Để xử lí điều hướng URL, ta có thể sử dụng Option CURLOPT_FOLLOWLOCATION với Value là TRUE. Số lượng lớn nhất của redirects được điều khiển bằng Option CURLOPT_MAXREDIRS
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($ch,CURLOPT_MAXREDIRS,2);//only 2 redirects
Tham khảo thêm tại: https://www.php.net/manual/en/book.curl.php
Xin chào tất cả anh em.
Mong qua bài này các bạn có thể sử dụng cơ bản được CURL.
Chúc các bạn học tập vui vẻ!
Bình luận: