Hướng dẫn dùng curl x-www-form-urlencoded trong PHP
Ở phần này bạn sẽ tìm hiểu cURL là gì? Cách thiết lập cURL để gửi đi một yêu cầu Request, sử dụng cURL GET, cURL POST và cURL POST dữ liệu JSON Show cCurl PHPcURL là một thư viện dùng để truyền dữ liệu trên mạng bằng một số giao thức như HTTP, FTP, HTTPS, POP3 ... . Nó ra đời từ năm 1997 viết bởi Daniel Stenberg, cơ bản nó là một thư viện viết bằng C. Trong hệ Linux nó có giao
diện dòng lệnh, có thể sử dụng ngay đó là lệnh curl https://xuanthulab.net 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 đủ, đó là thư viện: Client URL Library, để sử dụng được các hàm Server cần có thư viện libcurl (mặc định có sẵn). Bằng việc sử dụng cURL với PHP ta có thể truyền dữ liệu qua vài giao thức và hoạt động rất mạnh mẽ. Ví dụ gửi dữ liệu qua các website, xác thực oAuth, gọi API ... Cơ bản về sử dụng cURL PHPTrước khi gửi đi một yêu cầu nào đó (request), chúng ta cần tạo ra đối tượng cURL. Thật đơn giản chỉ việc gọi hàm curl_init($url), hàm này trả về một tài nguyên cURL. Trong đó tham số Ví dụ $curl = curl_init(); //url = null Thiết lập cURLNgay sau khi có được tài nguyên cURL bạn cần gán các thiết lập cho nó với hàm curl_setopt, cú pháp như sau: bool curl_setopt(resource $resource_cURL,int $option, $value) Trong đó $option là số nguyên chỉ ra loại thiết lập và $value là giá trị thiết lập, $resource_cURL là tài nguyên cURL tạo ra ban đầu. Dưới đây là danh sách các $option quan trọng nhất
Ngoài ra còn vô số thiết lập khác, có thể tham khảo: curl-setopt Ví dụ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://xuanthulab.net/apitest/'); Bạn có thi hành nhiều thiết lập một lúc bằng hàm curl_setopt_array() ví dụ: //Dữ liệu để POST $data = array( 'name' = 'foo', 'data' = array(1,2,3,4), 'value' = 'bar' ); //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://xuanthulab.net/apitest/', CURLOPT_POST => true, CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)", CURLOPT_POSTFIELDS => $data ); curl_setopt_array($curl, $options); Gửi yêu cầu với cURLSau khi tạo ra tài nguyên cURL và thiết lập như trên, tiến hành gửi yêu cầu với cURL bằng hàm curl_exec(). Kết quả trả về $curl = curl_init(); //... other code setting ... $result = curl_exec($curl); if ($result === FALSE) { echo "Lỗi cCURL"; } else { //Thành công, kết quả trong $result }
Đóng kết nối cURLNên nhớ sau khi kết nối, 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 cCURL GETVí dụ sau sử dụng cURL PHP gọi theo phương thức GET lấy dữ liệu JSON tìm kiếm trên
http://github.com các Repo (kho chứa) theo từ khóa 0, CURLOPT_URL => 'https://api.github.com/search/repositories?q=google', CURLOPT_USERAGENT => 'XuanThuLab 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ụ sử dụng cCURL POSTVí 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 => 'XuanThuLab 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); Sử dụng cCURL post dữ liệu JSONRấ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í dụ sử dụng dịch vụ Google URL Shortener Dịch vụ này của Google gọi là dịch vụ rút gắn link, một đường link dài rút ngắn lại để chia sẻ. Giờ bạn dùng cURL để truy cập dịch vụ này nhằm lấy link ngắn của một URL dài. Trước tiên bạn vào Google Cloud Console tạo một ứng dụng riêng để truy cập các dịch vụ Google. Sau đó vào Google URL Shortener bấm vào GET KEY để lấy key truy cập dịch vụ này. Dịch vụ Google URL Shortener đã bị dừng cung cấp bởi Google, nên thời điểm này nó không còn hoạt động, tuy nhiên ý nghĩa code bạn vẫn có thể tham khảo Đoạn mã đầy đủ $googleapikey = "KEY_TRUY_CẬP_DỊCH_VỤ"; $longurl = "https://xuanthulab.net/gop-file-thu-vien-trong-php-voi-include-va-require.html"; $data = array( "longUrl" =>$longurl ); $data_string = json_encode($data); $curl = curl_init( 'https://www.googleapis.com/urlshortener/v1/url?key='.$googleapikey); 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)) ); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($curl); $shorkey = json_decode($result); echo "SHORT URL: ".$shorkey->id; curl_close($curl); |