Cuộn tròn dữ liệu thô php

Trong hướng dẫn này, chúng tôi sẽ đề cập đến cách Sử dụng cURL PHP với Dữ liệu POST. Hướng dẫn này Mục đích cung cấp cho sinh viên CNTT hoặc những lập trình viên mới sử dụng Ngôn ngữ PHP một tài liệu tham khảo hoặc hướng dẫn sử dụng MODULE cURL PHP với dữ liệu POST. Tôi sẽ cung cấp một chương trình đơn giản để bạn dễ hiểu nhất theo hướng dẫn này

PHP cURL là gì?

cURL là viết tắt của “URL khách hàng”. Nó là một trong những module của PHP. Mô-đun này cho phép bạn gửi và nhận tệp qua HTTP. Nó cũng cho phép bạn chuyển dữ liệu dưới dạng POST và GET Data. Điều này sẽ làm cho các trang web và tên miền khác nhau kết nối đơn giản

Sử dụng cURL PHP với dữ liệu HTTP POST
Đoạn mã sau là một ví dụ về cách sử dụng cURL PHP với dữ liệu POST cho trang web của bạn.

Tạo tệp Index. php
Đầu tiên, chúng tôi sẽ tạo biểu mẫu mà bạn hoặc người dùng có thể viết mã dữ liệu để gửi. Lệnh dưới đây là một tập lệnh HTML và PHP có dạng đơn giản cho hướng dẫn này. Trong trường hợp của tôi, tôi lưu tệp này dưới dạng chỉ mục. php. Tệp chứa lệnh gửi dữ liệu POST và Nhận đầu ra từ một URL khác bằng PHP cURL.

Tạo một trang web mẫu khác.
Giả sử rằng tập lệnh dưới đây nằm trên một trang web khác. Lệnh này sẽ kiểm tra xem có dữ liệu POST được gửi cho yêu cầu hiện tại hay không. Ở đây, chỉ với mục đích diễn ra, chúng tôi sẽ chỉ xuất lại dữ liệu POST đã nhận cho người gửi. Có rất nhiều thứ bạn có thể làm ở mặt này nhưng đây không phải là mục đích của hướng dẫn.

post_api. php

Ảnh chụp trả về kết quả của các đoạn mã ở trên

Cuộn tròn dữ liệu thô php

Khi bạn có thể thấy, tập lệnh sau được viết tại tệp chỉ mục. php. Đây là tập lệnh cURL cho phép trang web hiện tại gửi hoặc gửi dữ liệu HTTP POST đến một URL khác. Đầu tiên, bạn khởi động mô-đun cURL sau đó đặt một số tùy chọn cần thiết như URL và POST. Tùy chọn CURLOPT_URL trong tập lệnh để biết nơi gửi dữ liệu POST. Tùy chọn CURLOPT_POSTFIELDS để biết dữ liệu chúng tôi muốn gửi. CURLOPT_RETURNTRANSFER for know has nắm bắt nội dung trang trả về yêu cầu xác nhận hay không

Khi đưa ra yêu cầu với curl, chúng tôi có thể gửi dữ liệu bài đăng dưới dạng các trường riêng lẻ, chẳng hạn như khi gửi biểu mẫu hoặc chúng tôi có thể gửi dữ liệu dưới dạng một khối văn bản.
Mã ví dụ bên dưới cho biết cách gửi cả hai loại yêu cầu bằng PHP.


Sử dụng Curl để đăng các trường

Hai ví dụ mã này cho biết cách gửi và nhận dữ liệu dưới dạng các trường riêng lẻ

send_post_fields. php


 'value1',
    'field2' => 'value2'
);

$query_string = http_build_query($data);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

curl_close($ch);

print_r($result);

read_post_fields. php



Using Curl to Post Raw Data

These two code examples show how to send data as one block of text or "raw data", and how to receive it.

send_post_raw_data.php

________2

read_post_raw_data.php

________1
curl_multi_select - Nhận tất cả các ổ cắm được liên kết với tiện ích mở rộng cURL, sau đó có thể "chọn" phần mở rộng này
curl_setopt_array - Đặt nhiều tùy chọn để truyền cURL
curl_setopt - Set an option for a cURL transfer
curl_version - Gets cURL version information


Curl_setopt

CURLOPT_AUTOREFERERTRUE để tự động đặt Người giới thiệu. trường trong các yêu cầu theo sau một Vị trí. chuyển hướng. CURLOPT_BINARYTRANSFERTRUE để trả về đầu ra thô khi sử dụng CURLOPT_RETURNTRANSFER. CURLOPT_COOKIESESSIONTRUE để đánh dấu đây là "phiên" cookie mới. Nó sẽ buộc libcurl bỏ qua tất cả các cookie mà nó sắp tải là "cookie phiên" từ phiên trước đó. Theo mặc định, libcurl luôn lưu trữ và tải tất cả cookie, độc lập nếu chúng là cookie phiên thì không. Cookie phiên là cookie không có ngày hết hạn và chúng chỉ tồn tại và tồn tại cho "phiên" này. CURLOPT_CRLFTRUE để chuyển đổi dòng mới Unix sang dòng mới CRLF khi chuyển. CURLOPT_DNS_USE_GLOBAL_CACHETRUE để sử dụng bộ đệm ẩn DNS chung. Tùy chọn này không an toàn cho luồng và được bật theo mặc định. CURLOPT_FAILONERRORTRUE không thành công nếu mã HTTP được trả về lớn hơn hoặc bằng 400. Hành vi mặc định là trả lại trang bình thường, bỏ qua mã. CURLOPT_FILETIMETRUE để cố truy xuất ngày sửa đổi của tài liệu từ xa. Sau đó, bạn có thể truy xuất giá trị này bằng tùy chọn CURLINFO_FILETIME với curl_getinfo(). CURLOPT_FOLLOWLOCATIONTRUE để theo dõi bất kỳ "Vị trí. " tiêu đề mà máy chủ gửi như một phần của tiêu đề HTTP (lưu ý đây là đệ quy, PHP sẽ theo nhiều "Vị trí. " tiêu đề mà nó được gửi, trừ khi CURLOPT_MAXREDIRS được đặt). CURLOPT_FORBID_REUSETRUE để buộc kết nối đóng một cách rõ ràng khi quá trình xử lý kết thúc và không được gộp lại để sử dụng lại. CURLOPT_FRESH_CONNECTTRUE để buộc sử dụng kết nối mới thay vì kết nối đã lưu trong bộ nhớ cache. CURLOPT_FTP_USE_EPRTTRUE để sử dụng EPRT (và LPRT) khi thực hiện tải xuống FTP đang hoạt động. Sử dụng FALSE để tắt EPRT và LPRT và chỉ sử dụng PORT. CURLOPT_FTP_USE_EPSVTRUE trước tiên hãy thử lệnh EPSV để truyền FTP trước khi hoàn nguyên về PASV. Đặt thành FALSE để tắt EPSV. CURLOPT_FTPAPPENDTRUE để thêm vào tệp từ xa thay vì ghi đè lên tệp. CURLOPT_FTPASCIIBí danh của CURLOPT_TRANSFERTEXT. Sử dụng cái đó thay thế. CURLOPT_FTPLISTONLYTRUE để chỉ liệt kê tên của thư mục FTP. CURLOPT_HEADERTRUE để đưa tiêu đề vào đầu ra. CURLOPT_HTTPGETTRUE để đặt lại phương thức yêu cầu HTTP thành GET. Vì GET là mặc định, điều này chỉ cần thiết nếu phương thức yêu cầu đã được thay đổi. CURLOPT_HTTPPROXYTUNNELTRUE để tạo đường hầm thông qua một proxy HTTP nhất định. CURLOPT_MUTETRUE hoàn toàn im lặng đối với các hàm cURL. CURLOPT_NETRCTRUE để quét ~/. netrc để tìm tên người dùng và mật khẩu của bạn cho trang web từ xa mà bạn đang thiết lập kết nối với. CURLOPT_NOBODYTRUE để loại trừ nội dung khỏi đầu ra. CURLOPT_NOPROGRESSTRUE để tắt đồng hồ đo tiến độ cho chuyển cURL. CURLOPT_NOSIGNALTRUE để bỏ qua bất kỳ hàm cURL nào khiến tín hiệu được gửi đến quy trình PHP. Tính năng này được bật theo mặc định trong các SAPI đa luồng nên vẫn có thể sử dụng các tùy chọn hết thời gian chờ. CURLOPT_POSTTRUE để thực hiện POST HTTP thông thường. POST này là loại ứng dụng/x-www-form-urlencoded bình thường, được sử dụng phổ biến nhất bởi các biểu mẫu HTML. CURLOPT_PUTTRUE to HTTP PUT một tệp. Tệp thành PUT phải được đặt bằng CURLOPT_INFILE và CURLOPT_INFILESIZE. CURLOPT_RETURNTRANSFERTRUE để trả lại quá trình chuyển dưới dạng một chuỗi giá trị trả về của curl_exec() thay vì xuất trực tiếp ra. CURLOPT_SSL_VERIFYPEERFALSE để ngăn cURL xác minh chứng chỉ ngang hàng. Chứng chỉ thay thế để xác minh có thể được chỉ định bằng tùy chọn CURLOPT_CAINFO hoặc thư mục chứng chỉ có thể được chỉ định bằng tùy chọn CURLOPT_CAPATH. CURLOPT_SSL_VERIFYHOSTcũng có thể cần phải là TRUE hoặc FALSE nếu CURLOPT_SSL_VERIFYPEER bị tắt (mặc định là 2). TRUE theo mặc định kể từ cURL 7. 10. Gói mặc định được cài đặt kể từ cURL 7. 10. CURLOPT_TRANSFERTEXTTRUE để sử dụng chế độ ASCII để truyền FTP. Đối với LDAP, nó truy xuất dữ liệu ở dạng văn bản thuần túy thay vì HTML. Trên các hệ thống Windows, nó sẽ không đặt STDOUT thành chế độ nhị phân. CURLOPT_UNRESTRICTED_AUTHTRUE để tiếp tục gửi tên người dùng và mật khẩu khi theo dõi các vị trí (sử dụng CURLOPT_FOLLOWLOCATION), ngay cả khi tên máy chủ đã thay đổi. CURLOPT_UPLOADTRUE để chuẩn bị tải lên. CURLOPT_VERBOSETRUE để xuất thông tin chi tiết. Ghi đầu ra vào STDERR hoặc tệp được chỉ định bằng CURLOPT_STDERR. CURLOPT_BUFFERSIZEKích thước của bộ đệm sẽ sử dụng cho mỗi lần đọc. Không có gì đảm bảo yêu cầu này sẽ được thực hiện, tuy nhiên. CURLOPT_CLOSEPOLICYCURLCLOSEPOLICY_LEAST_RECENTLY_USED hoặc CURLCLOSEPOLICY_OLDEST. Có ba hằng số CURLCLOSEPOLICY_ khác, nhưng cURL chưa hỗ trợ chúng. CURLOPT_CONNECTTIMEOUTSố giây chờ trong khi cố gắng kết nối. Sử dụng 0 để chờ vô thời hạn. CURLOPT_DNS_CACHE_TIMEOUTSố giây để lưu các mục nhập DNS trong bộ nhớ. Tùy chọn này được đặt thành 120 (2 phút) theo mặc định. CURLOPT_FTPSSLAUTHPhương thức xác thực FTP (khi được kích hoạt). CURLFTPAUTH_SSL (thử SSL trước), CURLFTPAUTH_TLS (thử TLS trước) hoặc CURLFTPAUTH_DEFAULT (hãy để cURL quyết định). CURLOPT_HTTP_VERSION_HTTP_VERSION_NONE (mặc định, cho phép CURL quyết định phiên bản nào sẽ sử dụng), CURL_HTTP_VERSION_1_0 (bắt buộc HTTP/1. 0) hoặc CURL_HTTP_VERSION_1_1 (buộc HTTP/1. 1). CURLOPT_HTTPAUTH(Các) phương thức xác thực HTTP sẽ sử dụng. Các tùy chọn là. CURLAUTH_BASIC, CURLAUTH_DIGEST, CURLAUTH_GSSNEGOTIATE, CURLAUTH_NTLM, CURLAUTH_ANY và CURLAUTH_ANYSAFE. CURLAUTH_ANYlà bí danh của CURLAUTH_BASIC. CURLAUTH_DIGEST. CURLAUTH_GSSNNEGOTIATE. CURLAUTH_NTLM. CURLAUTH_ANYSAFElà bí danh cho CURLAUTH_DIGEST. CURLAUTH_GSSNNEGOTIATE. CURLAUTH_NTLM. CURLOPT_INFILESIZEKích thước dự kiến, tính bằng byte, của tệp khi tải tệp lên một trang web từ xa. CURLOPT_LOW_SPEED_LIMITTốc độ truyền, tính bằng byte trên giây, mà quá trình truyền phải thấp hơn trong CURLOPT_LOW_SPEED_TIME giây để PHP coi là quá chậm và hủy bỏ. CURLOPT_LOW_SPEED_TIMESố giây chuyển phải dưới CURLOPT_LOW_SPEED_LIMIT để PHP xem xét quá chậm và hủy bỏ. CURLOPT_MAXCONNECTSSố lượng kết nối liên tục tối đa được phép. Khi đạt đến giới hạn, CURLOPT_CLOSEPOLICY được sử dụng để xác định kết nối nào sẽ đóng. CURLOPT_MAXREDIRSSố lần chuyển hướng HTTP tối đa cần theo dõi. Sử dụng tùy chọn này cùng với CURLOPT_FOLLOWLOCATION. CURLOPT_PORTSố cổng thay thế để kết nối với. CURLOPT_PROXYAUTH(Các) phương thức xác thực HTTP sẽ sử dụng cho kết nối proxy. Sử dụng các mặt nạ bit giống như được mô tả trong CURLOPT_HTTPAUTH. Để xác thực proxy, hiện chỉ hỗ trợ CURLAUTH_BASIC và CURLAUTH_NTLM. CURLOPT_PROXYPORTSố cổng của proxy để kết nối với. Số cổng này cũng có thể được đặt trong CURLOPT_PROXY. CURLOPT_PROXYTYPECURLPROXY_HTTP (mặc định) hoặc CURLPROXY_SOCKS5. CURLOPT_RESUME_FROMPhần bù, tính bằng byte, để tiếp tục chuyển từ. CURLOPT_SSL_VERIFYHOST1 để kiểm tra sự tồn tại của một tên chung trong chứng chỉ ngang hàng SSL. 2 để kiểm tra sự tồn tại của một tên phổ biến và cũng xác minh rằng nó khớp với tên máy chủ được cung cấp. CURLOPT_SSLVERSIONPhiên bản SSL (2 hoặc 3) để sử dụng. Theo mặc định, PHP sẽ cố gắng tự xác định điều này, mặc dù trong một số trường hợp, bạn phải đặt điều này theo cách thủ công. CURLOPT_TIMECONDITIONCURLOPT_TIMEVALUE được xử lý như thế nào. Chỉ sử dụng CURL_TIMECOND_IFMODSINCE để trả lại trang nếu trang đó đã được sửa đổi kể từ thời điểm được chỉ định trong CURLOPT_TIMEVALUE. Nếu nó chưa được sửa đổi, tiêu đề "304 Not Modified" sẽ được trả về giả sử CURLOPT_HEADER là TRUE. Sử dụng CURL_TIMECOND_ISUNMODSINCE cho hiệu ứng đảo ngược. CURL_TIMECOND_IFMODSINCE là mặc định. Đã thêm vào PHP 5. 1. 0. CURLOPT_TIMEOUTSố giây tối đa để cho phép các hàm cURL thực thi. CURLOPT_TIMEVALUEThời gian tính bằng giây kể từ ngày 1 tháng 1 năm 1970. Thời gian sẽ được sử dụng trước CURLOPT_TIMECONDITION. Theo mặc định, CURL_TIMECOND_IFMODSINCE được sử dụng. CURLOPT_CAINFOTên của tệp chứa một hoặc nhiều chứng chỉ để xác minh ngang hàng với. Điều này chỉ có ý nghĩa khi được sử dụng kết hợp với CURLOPT_SSL_VERIFYPEER. CURLOPT_CAPATHThư mục chứa nhiều chứng chỉ CA. Sử dụng tùy chọn này cùng với CURLOPT_SSL_VERIFYPEER. CURLOPT_COOKIENội dung của "Set-Cookie. " tiêu đề được sử dụng trong yêu cầu HTTP. CURLOPT_COOKIEFILETên của tệp chứa dữ liệu cookie. Tệp cookie có thể ở định dạng Netscape hoặc chỉ các tiêu đề kiểu HTTP đơn giản được đổ vào một tệp. CURLOPT_COOKIEJARTên của tệp để lưu tất cả cookie nội bộ vào khi đóng kết nối. CURLOPT_CUSTOMREQUESTMột phương thức yêu cầu tùy chỉnh để sử dụng thay vì "GET" hoặc "HEAD" khi thực hiện yêu cầu HTTP. Điều này hữu ích để thực hiện "XÓA" hoặc các yêu cầu HTTP khó hiểu hơn khác. Giá trị hợp lệ là những thứ như "NHẬN", "POST", "CONNECT", v.v.; . e. Không nhập toàn bộ dòng yêu cầu HTTP tại đây. Chẳng hạn, nhập "GET /index. htmlHTTP/1. 0rnrn" sẽ không chính xác. CURLOPT_EGBSOCKETGiống như CURLOPT_RANDOM_FILE, ngoại trừ tên tệp cho ổ cắm Daemon thu thập Entropy. CURLOPT_ENCODINGNội dung của "Chấp nhận mã hóa. " tiêu đề. Điều này cho phép giải mã phản hồi. Mã hóa được hỗ trợ là "identity", "deflate" và "gzip". Nếu một chuỗi rỗng, "", được đặt, thì một tiêu đề chứa tất cả các loại mã hóa được hỗ trợ sẽ được gửi. CURLOPT_FTPPORTGiá trị sẽ được sử dụng để lấy địa chỉ IP để sử dụng cho lệnh FTP "POST". Hướng dẫn "POST" yêu cầu máy chủ từ xa kết nối với địa chỉ IP được chỉ định của chúng tôi. Chuỗi có thể là địa chỉ IP đơn giản, tên máy chủ, tên giao diện mạng (trong Unix) hoặc chỉ là '-' đơn giản để sử dụng địa chỉ IP mặc định của hệ thống. CURLOPT_INTERFACETên của giao diện mạng gửi đi sẽ sử dụng. Đây có thể là tên giao diện, địa chỉ IP hoặc tên máy chủ. CURLOPT_KRB4LEVELMức bảo mật KRB4 (Kerberos 4). Bất kỳ giá trị nào sau đây (theo thứ tự từ ít nhất đến mạnh nhất) đều hợp lệ. "rõ ràng", "an toàn", "bí mật", "riêng tư". Nếu chuỗi không khớp với một trong những chuỗi này, thì "riêng tư" được sử dụng. Đặt tùy chọn này thành NULL sẽ vô hiệu hóa bảo mật KRB4. Bảo mật KRB4 hiện tại chỉ hoạt động với các giao dịch FTP. CURLOPT_POSTFIELDSToàn bộ dữ liệu để đăng trong thao tác HTTP "POST". CURLOPT_PROXYProxy HTTP cho các yêu cầu đường hầm thông qua. CURLOPT_PROXYUSERPWDTên người dùng và mật khẩu được định dạng là "[tên người dùng]. [mật khẩu]" để sử dụng cho kết nối với proxy. CURLOPT_RANDOM_FILETên tệp được sử dụng để khởi tạo trình tạo số ngẫu nhiên cho SSL. CURLOPT_RANGEDải dữ liệu cần truy xuất ở định dạng "X-Y" trong đó X hoặc Y là tùy chọn. Truyền HTTP cũng hỗ trợ một số khoảng thời gian, được phân tách bằng dấu phẩy ở định dạng "X-Y,N-M". CURLOPT_REFERERNội dung của "Người giới thiệu. " tiêu đề được sử dụng trong yêu cầu HTTP. CURLOPT_SSL_CIPHER_LISTDanh sách mật mã sử dụng cho SSL. Ví dụ: RC4-SHA và TLSv1 là danh sách mật mã hợp lệ. CURLOPT_SSLCERTTên của tệp chứa chứng chỉ có định dạng PEM. CURLOPT_SSLCERTPASSWDMật khẩu bắt buộc để sử dụng chứng chỉ CURLOPT_SSLCERT. CURLOPT_SSLCERTTYPEĐịnh dạng của chứng chỉ. Các định dạng được hỗ trợ là "PEM" (mặc định), "DER" và "ENG". CURLOPT_SSLENGINESố nhận dạng cho công cụ mã hóa của khóa SSL riêng được chỉ định trong CURLOPT_SSLKEY. CURLOPT_SSLENGINE_DEFAULTSố nhận dạng cho công cụ mã hóa được sử dụng cho các hoạt động mã hóa bất đối xứng. CURLOPT_SSLKEYTên của tệp chứa khóa SSL riêng. CURLOPT_SSLKEYPASSWDMật khẩu bí mật cần thiết để sử dụng khóa SSL riêng được chỉ định trong CURLOPT_SSLKEY. CURLOPT_SSLKEYTYPELoại khóa của khóa SSL riêng được chỉ định trong CURLOPT_SSLKEY. Các loại khóa được hỗ trợ là "PEM" (mặc định), "DER" và "ENG". CURLOPT_URLURL cần tìm nạp. Bạn cũng có thể đặt cài đặt này khi khởi tạo phiên với curl_init(). CURLOPT_USERAGENTNội dung của "Tác nhân người dùng. " tiêu đề được sử dụng trong yêu cầu HTTP. CURLOPT_USERPWDTên người dùng và mật khẩu được định dạng là "[tên người dùng]. [mật khẩu]" để sử dụng cho kết nối. CURLOPT_HTTP200ALIASESMột mảng các phản hồi HTTP 200 sẽ được coi là phản hồi hợp lệ chứ không phải lỗi. CURLOPT_HTTPHEADERMột mảng các trường tiêu đề HTTP để đặt. CURLOPT_POSTQUOTEMột dãy lệnh FTP để thực thi trên máy chủ sau khi yêu cầu FTP đã được thực hiện. CURLOPT_QUOTEMột dãy các lệnh FTP để thực thi trên máy chủ trước khi có yêu cầu FTP. CURLOPT_FILETệp mà quá trình chuyển sẽ được ghi vào. Mặc định là STDOUT (cửa sổ trình duyệt). CURLOPT_INFILETệp cần đọc khi tải lên. CURLOPT_STDERRMột vị trí thay thế để xuất lỗi thay vì STDERR. CURLOPT_WRITEHEADERTệp mà phần tiêu đề của quá trình truyền được ghi vào. CURLOPT_HEADERFUNCTIONTên của hàm gọi lại trong đó hàm gọi lại nhận hai tham số. Đầu tiên là tài nguyên cURL và thứ hai là một chuỗi có dữ liệu được ghi. Sử dụng chức năng gọi lại này, bạn có trách nhiệm ghi dữ liệu. Phải trả về số byte chính xác đã ghi, nếu không điều này sẽ thất bại.