Hướng dẫn dùng curl_setopt trong PHP
Bài trước chúng ta đã làm một ví dụ đơn giản sử dụng CURL để viết một ứng dụng đó là chạ một trang web khác, trong bài đó chúng ta có sử dụng hàm curl_setopt để thiết lập các thông số cấu hình cho CURL. Vậy thì trong bài này chúng ta sẽ tìm hiểu hàm này và các thông số truyền vào của nó nhé. Show
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Hàm curl_setopt trong CURL PHPCú pháp: bool curl_setopt ( resource $ch , int $option , mixed $value ) Trong đó:
Ví dụ: Bài viết này được đăng tại [free tuts .net] // Tạo mới một CURL $ch = curl_init(); // Cấu hình cho CURL curl_setopt($ch, CURLOPT_URL, "https://freetuts.net/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Thực thi CURL curl_exec($ch); // Ngắt CURL, giải phóng $result = curl_close($ch); // In kết quả ra màn hình echo $result; Trong ví dụ này mình có sử dụng hàm Có thể bạn quan tâm
Trong ví dụ ở bài 1 mình không sử dụng thông số CURLOPT_RETURNTRANSFER nên không cần 2. Danh sách các thông số cấu hình của hàm curl_setopt PHPThật sự mà nói mình không thể liệt kê hết các thông số cấu hình cho hàm này được vì nó có quá nhiều, và thực tế thì mình cũng chưa bao giờ sử dụng hết các thông số đó nên cũng không dám liệt kê ra. Nếu bạn quan tâm thì hãy lên trang chủ của php.net bằng link này để xem thêm nhé. Tuy nhiên ở các bài
tiếp theo chúng ta sẽ làm các ví dụ và sẽ biết thêm được một số thông số cấu hình cho hàm 3. Lời kếtBài 2 này cũng sẽ ngưng tại đây, lý do mình đã nói rồi vì các thông số quá nhiều nên không thể trình bày hết ra đây được. Chúng ta sẽ thực hành các ví dụ ở các bài tiếp theo và tôi sẽ ứng dụng một số thông số đặc trưng, hay sử dụng để các bạn làm quen, từ đó có thể mày mò thêm nhé. Ở 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 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' => '[email protected]', '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); |
Bài Viết Liên Quan
How do you get a specific value from an object in javascript?
The Object.values() method returns an array of a given objects own enumerable property values, in the same order as that provided by a for...in loop. (The only difference is that a for...in loop ...
Hướng dẫn python string repeat
A good way of organizing your code is to put your main program into a function called main() or similar:def main(): sentence = input(Please enter sentence(s): ) num_words = ...
Hướng dẫn restart mysql centos 7
Centos 7 lệnh khác khá nhiều so với Centos 6 do đó có thể bạn sẽ cảm thấy hơi khó khăn khi sử dụng các dòng lệnh để thao tác những tác vụ cần thiết. Bài ...
How do you call a javascript function in html?
There are many ways to call a JavaScript function in the HTML document, and it is also not a difficult task. First, we have used one of the easiest ways to call a JavaScript function in HTML ...
Hướng dẫn required html là gì
1) Bộ chọn :required trong CSS- Bộ chọn :required dùng để chọn các phần tử form có thiết lập thuộc tính required.- Lưu ý:Các phần tử có thể được thiết lập ...
Hướng dẫn concat mongodb
Docs Home → MongoDB Manual$concatConcatenates strings and returns the concatenated string.$concat has the following syntax:{ $concat: [ , , ... ] }The arguments can be any valid expression as long ...
Hướng dẫn dùng www.ini trong PHP
Khi PHP chạy, nó sẽ nạp các cấu hình để thay đổi cách nó ứng sử từ các file php.ini, hầu hết các thiết lập được thực hiện ở đây (một số thiết ...
How do you ask a question on python?
1. Asking QuestionsInput means to enter data into a program.Use the input command to ask a question.You must save the answer into a suitably named variable using the = symbol.Task 1 - Create a ...
Hướng dẫn varchar max mysql
Độ dài tối đa của một varchar tùy thuộc vào kích thước hàng tối đa trong MySQL, là 64KB (không tính BLOB):VARCHAR(65535)Tuy nhiên, lưu ý rằng giới hạn thấp hơn ...
Kích thước quảng cáo facebook 2023
Để có được ảnh đại diện và ảnh bìa Fanpage Facebook chuẩn nhất đẹp nhất bạn phải tải lên ảnh có kích thước chuẩn theo quy định của Facebook. Tuy ...
How can i get data between two dates in php?
Im using a database to store logs, with a column date which holds the date it was inserted. The format of the date is MM/DD/YY. Please can anyone suggest how I would SELECT data in between two ...
Cấu trúc dự án nodejs
Nội dung bài viếtVideo học lập trình mỗi ngàyProject Express và Node.Js - Đây là một trong số câu hỏi tuần này. Một kiến trúc tốt chưa chắc phù hợp với ...
Hướng dẫn stroke css
Fonts chữ trên web về cơ bản là đồ họa dựa trên vector. Đó là lý do tại sao bạn có thể hiển thị chúng ở 12px hoặc 120px và chúng vẫn sắc nét và tương ...
Print e pattern in python
Last update on August 19 2022 21:50:46 (UTC/GMT +8 hours)Python Conditional: Exercise - 19 with SolutionWrite a Python program to print alphabet pattern E.Pictorial Presentation: ...
How do i do an if statement in python?
Python If ... ElsePython Conditions and If statementsPython supports the usual logical conditions from mathematics:Equals: a == bNot Equals: a != bLess than: a < bLess than or equal to: a bGreater ...
Hướng dẫn np vstack trong python
Tôi nghĩ đoạn mã sau minh họa sự khác biệt một cách độc đáo:>>> np.vstack(([1,2,3],[4,5,6])) array([[1, 2, 3], [4, 5, 6]]) >>> ...
Chi phí sinh mổ ở bệnh viện an sinh 2023
Bảo hiểm y tế là hình thức bảo hiểm ai cũng có thể tham gia để chăm lo, bảo vệ sức khỏe và giảm bớt chi phí khi đi khám chữa bệnh. Với phụ nữ mang ...
Hướng dẫn advanced list comprehension python
Nội dung chínhWhen to Use a List Comprehension in PythonHow to Create Lists in PythonUsing for LoopsUsing map() ObjectsUsing List ComprehensionsBenefits of Using List ComprehensionsHow to ...
How do you convert text to numeric in python?
View DiscussionImprove ArticleSave ArticleReadDiscussView DiscussionImprove ArticleSave ArticleIn Python an strings can be converted into a integer using the built-in int() function. The int() ...
Hướng dẫn dùng php pi trong PHP
botvietbai.com cung cấp các hướng dẫn, tài liệu tham khảo và bài tập trực tuyến miễn phí bằng tất cả các ngôn ngữ chính của web. Bao gồm các chủ đề phổ ...