Php curl lấy hình ảnh

PHP cURL là thư viện cho phép máy khách truy cập máy chủ từ xa thông qua URL. Nó gửi các yêu cầu HTTP đến điểm cuối từ một ứng dụng hoặc thành phần khác

Nó cho phép các lượt truy cập liên ứng dụng nhận được phản hồi qua mạng. Cơ chế này rất hữu ích để làm việc với các dịch vụ PHP RESTful, tương tác API, v.v.

Có nhiều trường hợp sử dụng trong đó bài đăng cURL PHP hoàn toàn phù hợp. Ví dụ,

  1. Trích xuất nội dung từ một trang web
  2. Chuẩn bị nguồn cấp dữ liệu từ các nguồn bên ngoài
  3. Các phương thức truy cập trực tiếp của API không có SDK

Ví dụ nhanh này cung cấp mã đơn giản để triển khai bài đăng cURL PHP

ví dụ nhanh

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
2

Ngoài ra, chúng ta sẽ xem thêm các ví dụ về trường hợp sử dụng của PHP cURL post request trong các phần sắp tới

Phần 1 – Khái niệm cơ bản về PHP cURL

Sau đây là các bước để thực hiện chu trình phản hồi yêu cầu cURL cơ bản của PHP

  • Khởi tạo phiên cURL
  • Đặt tùy chọn cURL
  • thực hiện yêu cầu
  • Đóng phiên

Làm cách nào để định cấu hình PHP cURL?

PHP chứa thư viện libcurl để tạo môi trường làm việc với cURL. Thư viện này sẽ được bật theo mặc định

Nếu không, hãy thực hiện các bước sau để bật mô-đun cURL PHP trong môi trường của bạn

  1. Mở tệp cấu hình PHP php. ban đầu
  2. Kiểm tra sự bắt đầu của
    curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
    
    1
  3. Bỏ dấu chấm phẩy [;] ở đầu dòng trên
  4. Khởi động lại máy chủ Apache

Đặt yêu cầu POST cURL PHP – Phương pháp thay thế

Có nhiều cách để gửi thông số bài viết PHP cURL

  1. định dạng JSON
  2. Chuỗi truy vấn HTTP
  3. Định dạng mảng POST

định dạng JSON

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
3

Chuỗi truy vấn HTTP

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
4

PHP cURL POST định dạng mảng

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
2 có thể có một mảng PHP để truyền tham số cho điểm cuối

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
5

Đặt tùy chọn tiêu đề cURL

Để đặt tiêu đề PHP cURL, hằng số CURLOPT_HTTPHEADER được sử dụng. Tiêu đề cURL có thể có thêm thông tin. Các khóa sau đây là một số ví dụ để thêm các tùy chọn tiêu đề PHP cURL

  • Mã hóa chấp nhận
  • Kiểm soát bộ đệm
  • Chủ nhà
  • Loại nội dung
  • Ngôn ngữ chấp nhận
  • Đại lý người dùng

Chương trình này đặt các tùy chọn tiêu đề cURL để đặt loại nội dung. Cũng có các tùy chọn để gửi tiêu đề tùy chỉnh. Đó là gửi các cặp khóa-giá trị không chuẩn. Sử dụng tiền tố X- để gửi các tiêu đề không chuẩn. Thí dụ,

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
6

Hằng số CURLOPT_HEADER được đặt với giá trị boolean true. Đó là để cho phép thông tin tiêu đề được đính kèm với phản hồi trả về

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
7

Phần 2 – Các trường hợp sử dụng ví dụ

Với một số kiến ​​thức cơ bản, bạn sẽ dễ dàng hiểu được các ví dụ sau. Nó giải quyết một số tình huống sử dụng của bài đăng cURL PHP hoặc nhận các phương thức yêu cầu

Dữ liệu biểu mẫu HTTP POST

PHP cURL cho phép đăng tham số lên máy chủ. Nó sử dụng bất kỳ phương pháp nào mà chúng ta đã thảo luận trước đó để đăng thông số qua cURL

Tập lệnh cURL sau đây cho biết cách đăng một mảng lên một URL điểm cuối.

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
3 và
curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
2 sẽ gửi các giá trị qua bài đăng cURL PHP

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
8

PHP cURL POST để tải tệp lên

Cũng có thể tải tệp lên máy chủ thông qua bài đăng PHP cURL. Đoạn mã dưới đây cho biết cách tải tệp hình ảnh lên máy chủ

Nó chuẩn bị đối tượng với dữ liệu tệp. Nó sử dụng hàm PHP curl_file_create[] để chuẩn bị nội dung bài đăng tệp

Bằng cách gửi gói ‘fileParam’ theo cách này, mã điểm cuối có thể truy cập nó qua mảng $_FILES[]

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
9

Đặt mã điểm cuối sau vào máy chủ. Sau đó nhấn điểm cuối thông qua tập lệnh cURL ở trên. Yêu cầu bài đăng cuộn tròn PHP gửi đầu vào tệp đến điểm cuối này. Mã PHP này truy cập tệp đã tải lên từ mảng $_FILES

php-curl-post-file-endpoint. php

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
20

Yêu cầu HTTP GET để lấy một trang web

Trong yêu cầu cURL, phương thức mặc định là GET. Chương trình này gọi máy chủ qua cURL với phương thức yêu cầu GET mặc định

Không giống như PHP cURL POST, nó gửi dữ liệu dưới dạng chuỗi truy vấn. Để truyền tham số cho yêu cầu GET, nó phải được xây dựng như một phần của URL

Nó lấy HTML của trang web được chỉ định làm điểm cuối cURL. Nó in phản hồi và hiển thị HTML của trang web mục tiêu trong trình duyệt

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
21

Lấy HTML của trang web qua cURL và ghi vào một tệp

Thay vì in bố cục trang web lên trình duyệt, nó cũng có thể được ghi vào một tệp

Mã này tạo một xử lý tệp và ghi phản hồi HTML cURL vào một tệp. Nó sử dụng xử lý tệp làm tài liệu tham khảo

Nó sẽ hữu ích nếu bạn muốn tải xuống và lưu HTML trang web vào máy chủ vĩnh viễn

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
22

Hàm file_get_contents[] của PHP cũng được sử dụng để lấy nội dung của URL mục tiêu

Tuy nhiên, cấu hình máy chủ sẽ cho phép đọc nội dung bằng cách sử dụng phương pháp này

PHP CURL đăng và nhận dữ liệu JSON

Ví dụ này cho thấy cách gửi một bài đăng cURL PHP ở định dạng JSON. Nó cũng nhận được phản hồi cURL ở định dạng JSON

Đoạn code này hướng dẫn tạo các dịch vụ API để nhận yêu cầu và gửi phản hồi ở định dạng JSON

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
23

Mã này chuẩn bị phản hồi JSON bằng cách đặt loại nội dung bằng tiêu đề PHP[]. Nó đặt ứng dụng/json làm loại nội dung

php-curl-post-endpoint-json. php

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
24

Xử lý chuyển hướng [HTTP 301,302]

CURLOPT_FOLLOWLOCATION được đặt thành true để thực hiện chuyển hướng 3XX qua PHP cURL

Trong quá trình chuyển hướng, cURL sẽ gửi yêu cầu GET trong các lần chuyển hướng liên tiếp. Để thay đổi điều này, CURLOPT_POSTREDIR phải được đặt

Chương trình này đặt CURL_REDIR_POST_ALL để gửi các yêu cầu POST cURL PHP trong các lần thử liên tiếp

Nó giới hạn số lần chuyển hướng bằng cách sử dụng hằng số CURLOPT_MAXREDIRS

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
25

Chương trình này sẽ trả về nhiều thông tin như hình bên dưới

  • số lần chuyển hướng
  • Thời gian để chuyển hướng
  • Tiêu đề có trạng thái 3XX

Viết nhật ký lỗi cURL vào một tệp

Giữ nhật ký là cách thực hành tốt nhất cho mục đích kiểm toán. Khi trang web hoạt động, đôi khi nhật ký cũng rất hữu ích để gỡ lỗi

Vì đây là cuộc gọi từ xa nên việc ghi lỗi cURL vào một tệp sẽ giúp phân tích và khắc phục sự cố

Đoạn code này hướng dẫn log lỗi xảy ra trong bài viết PHP cURL. Nó sử dụng hàm PHP curl_error[] để

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
26

Viết nhật ký cURL bằng hằng số CURLOPT_STDERR

Có một phương pháp thay thế để ghi lỗi PHP cURL vào một tệp. CURLOPT_STDERR viết thông báo lỗi với tham chiếu xử lý tệp

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
27

Chương trình này sẽ trả về đầu ra sau

Phần 3 – Tạo PHP cURL script trích xuất ảnh từ website

Trong phần này của bài viết, chúng ta sẽ tạo một thành phần cURL end-to-end. Nó sẽ làm như sau để lấy hình ảnh từ một trang web

  1. Tạo dịch vụ API để khởi tạo DOM để tải phản hồi
  2. Tạo dịch vụ cURL để khởi tạo, định cấu hình và thực hiện các yêu cầu
  3. Đọc phản hồi cURL và tải nó vào đối tượng DOM
  4. Nhận URL nguồn hình ảnh bằng cách truy cập đối tượng DOM
  5. Tạo một thư viện ảnh bằng cách sử dụng mảng phản hồi PHP cURL

Lớp dịch vụ API để khởi tạo cURL và tạo đối tượng DOM

Lớp GrabImageAPI này tạo các phiên bản PHP DOMDocument để tải trang web HTML

Hàm khởi tạo cURL và lấy phản hồi HTML hoàn chỉnh của URL. Sau đó, nó tải phản hồi này vào đối tượng DOM

Với tham chiếu của đối tượng, getWebsiteImage[] lấy URL nguồn hình ảnh

Hàm này đọc tất cả hình ảnh bằng cách sử dụng getElementsByTagName[]. Bằng cách lặp lại mảng dữ liệu hình ảnh, nó chuẩn bị gói JSON của các URL hình ảnh

Dịch vụ/GrabImageAPI. php

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
28

Tạo dịch vụ cURL để thực hiện các hoạt động vòng đời thông thường

Lớp này không là gì ngoài việc thực hiện các thao tác cuộn tròn cơ bản mà chúng ta đã thấy ở phần đầu

Hàm tạo GrabImageAPI bao gồm dịch vụ này và tạo phiên bản cURL

Dịch vụ/CurlDịch vụ. php

curl_setopt[$ch, CURLOPT_SSL_VERIFYHOST, 2];
29

API kích hoạt để lấy hình ảnh qua bài đăng PHP cURL

Mã này sẽ nhấn API để lấy hình ảnh qua bài viết PHP cURL. Nó yêu cầu tham chiếu lớp API mà nó tạo thư viện hình ảnh động bằng cách sử dụng cURL

Mã này rất hữu ích để tạo tiện ích thư viện cho cửa hàng bên ngoài của bạn một cách độc lập

php-curl-lấy-hình ảnh. php

$token = "generated token code";
curl_setopt[
    $ch, 
    CURLOPT_HTTPHEADER, 
    array[
        'Content-Type: application/json', // for define content type that is json
        'bearer: '.$token, // send token in header request
        'Content-length: 100' // content length for example 100 characters [can add by strlen[$fields]]
    ]
];
20

Sự kết luận

Hy vọng bài viết này giúp bạn có kiến ​​thức sâu về PHP cURL post và các phương thức request khác

Các ví dụ ngắn và từ đầu đến cuối có thể hữu ích để tạo thành phần cURL cho ứng dụng của bạn

Tôi hoan nghênh ý kiến ​​của bạn để tiếp tục mang lại nhiều giá trị gia tăng hơn cho người học.
Tải xuống

↑ Quay lại Đầu trang

Làm cách nào để bạn gửi yêu cầu POST trên cURL?

Để gửi dữ liệu với các yêu cầu POST và PUT, đây là các tùy chọn cuộn phổ biến. .

loại yêu cầu. -X BÀI. -X ĐẶT

tiêu đề loại nội dung

-H "Loại nội dung. ứng dụng/x-www-form-urlencoded"

-H "Loại nội dung. ứng dụng/json"

dữ liệu. biểu mẫu được mã hóa url. -d "param1=value1¶m2=value2" hoặc -d @data. txt

Tôi có thể sử dụng cURL trong PHP không?

cURL là thư viện PHP và công cụ dòng lệnh [tương tự như wget] cho phép bạn gửi và nhận tệp qua HTTP và FTP . Bạn có thể sử dụng proxy, truyền dữ liệu qua kết nối SSL, đặt cookie và thậm chí nhận tệp được bảo vệ bằng thông tin đăng nhập.

PHP xử lý yêu cầu cURL như thế nào?

php. $url = "https. //www. javatpoint. com/"; $ch = curl_init[]; curl_setopt[$ch, CURLOPT_RETURNTRANSFER, 1];

Chủ Đề