Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Programming » PHP » Php curl cơ bản và cách sử dụng

Php curl cơ bản và cách sử dụng

Thứ Hai, 28/07/2014 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Trong bài hôm nay mình hướng dẫn các bạn sử dụng php curl cơ bản để lấy dữ liệu của website cũng như gửi dữ liệu vào website và rất nhiều tính năng khác nữa. Thư viện curl được tích hợp sẵn trong web server, chúng ta có thể sử dụng curl với ngôn ngữ lập trình web server như php, java nhưng bản chất của nó là giao diện lệnh curl command line.

Sau khi cài PHP Webserver bạn có thể sẵn sàng làm việc với thư viện curl.

Đoạn mã sau echo nội dung của trang web:

$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,"http://example.com");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
echo curl_exec($ch);

Khởi tạo đối tượng curl với curl_init vào biến $ch, ta hiểu là tạo instance của curl. Thiết lập các thuộc tính cho đối tượng curl chúng ta có hàm curl_setopt. Khai báo địa chỉ URL với constant CURLOPT_URL. Bạn có thể thiết lập URL ngay ở bước tạo đối tượng curl.

$ch=curl_init("http://example.com");

Sau khi thực thi curl bởi hàm curl_exec() sẽ trả về nội dung của URL, nếu bạn thiết lập CURLOPT_RETURNTRANSFER=true. Mặc định giá trị này là false , toàn bộ nội dung trả về sẽ echo ra ngoài.

//nội dung của URL được trả về
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
//nội dung của URL sẽ echo.
curl_setopt($ch,CURLOPT_RETURNTRANSFER,false);	//mặc định.

SSL – HTTPS

Nếu URL có dạng https, thì khai báo thêm thuộc tính SSL.

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);

Gửi dữ liệu CURL POST

Sử dụng curl để gửi dữ liệu post đến URL rất đơn giản, mình xin lấy ví dụ cụ thể bạn có thể hiểu ra ngay. Tạo các file sau đây:
*Tạo file php (1.php) copy đoạn code dưới đây vào file sử dụng notepad++ hoặc notepad:

<!--?php $url="http://localhost/2.php"; $post=array( 'a'=&gt;'A',
	'b'=&gt;'B'
);
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
echo curl_exec($ch);
?-->

*2.php:

<!--?php print_r($_POST); ?-->

Ví dụ trên chúng ta khai báo có dữ liệu post được gửi đi, thông qua option CURLOPT_POST và đưa dữ liệu vào curl bởi option CURLOPT_POSTFIELDS.

CURLOPT_POSTFIELDS chấp nhận giá trị mảng và chuỗi tham số query. Trong php có hàm http_build_query giúp bạn tạo chuỗi query string.

curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($post));

Chú ý: Hàm http_build_query($post) trả về chuỗi là: “a=A&b=B”

Truyền dữ liệu post dạng JSON. Điều này sẽ hữu ích khi sử dụng web service, nếu bạn sử dụng API có yêu cầu truyền dữ liệu JSON không phải post fields với kiểu mảng. Một chuỗi JSON được mã hóa từ đối tượng mảng trong php có hàm json_encode. Mặc định content-type là text/html bạn cần đổi thành json header: application/json
Sau đây là ví dụ cụ thể sử dụng CURL với php cho phép gửi dữ liệu JSON.

$data = array("name" =&gt; "Hagrid", "age" =&gt; "36");                                                                    
$data_string = json_encode($data);                                                                                   
 
$ch = curl_init('http://api.local/rest/users');                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                   
 
$result = curl_exec($ch);

Sử dụng cookie giữa các URL cùng domain

Tại sao phải sử dụng cookie trong curl, câu hỏi này bạn có thể đoán ra bởi vì cookie/session dùng để lưu phiên lảm việc của người dùng, những dữ liệu cá nhân và những thao tác api nhạy cảm cần thông tin này mới được phép hoạt động. Mình ví dụ: sử dụng 2 api, api đầu tiên có vai trò tạo phiên làm việc người dùng, api thứ 2 sử lý dữ liệu chẳng hạn như post bài viết mới. Rõ ràng để api thứ 2 có thể hoạt động phải yêu cầu xác nhận thông tin của user hay user đã login.

Thông tin của user lưu tại cookie/session và có thể hoạt động từ trang này đến trang khác. Để thực hiện được điều này bạn khai báo đường dẫn của file cookie.

curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");		#writing
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");		#reading

<p
Những hoạt động sinh ra cookies của URL1 sẽ quản lý bởi option CURLOPT_COOKIEJAR và những cookies cũ tạo bởi URL1 được sử dụng cho URL2, bằng cách khai báo option CURLOPT_COOKIEFILE URL2 sẽ hoạt động trơn chu.

File cookie.txt cũ có thể bị sử dụng trong khi truy vấn API và phiên làm việc của user cũ có thể được sử dụng trong api này. Nhưng không may trong API này bạn muốn chuyển sang user mới, curl có option CURLOPT_COOKIESESSION giúp bạn tạo cookie.txt mới.

curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);

Các bài sau bạn sẽ học cách làm việc với các phương thức như PUT, DELETE,…chúc bạn học tốt.

Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: PHP Tìm kiếm: curl

Comments

  1. Hoàng Quách says

    Thứ Ba, 29/07/2014 at 10:54 chiều

    bài viết hay

    • khanh says

      Thứ Tư, 30/07/2014 at 7:34 sáng

      mình có cài đặt curl nhưng khi vào cmd gõ curl thì nó báo ko có lệnh này?

      • Hoàng Quách says

        Thứ Ba, 19/12/2017 at 7:41 sáng

        Bạn set PATH trong window chưa?

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.