Hướng dẫn how to submit form using curl in php - cách gửi biểu mẫu bằng curl trong php

Xem ví dụ chi tiết này, bắt đầu bằng cách tạo một kết nối mới.

$curl_connection = 
  curl_init('http://www.domainname.com/target_url.php');

Một kết nối mới được tạo bằng hàm curl_init (), lấy URL đích làm tham số (URL nơi chúng tôi muốn đăng dữ liệu của chúng tôi). URL mục tiêu giống như các tham số hành động của người Viking có dạng bình thường, trông như thế này:

Bây giờ, hãy để một số tùy chọn cho kết nối của chúng tôi. Chúng ta có thể thực hiện điều này bằng cách sử dụng hàm Curl_SetOpt (). Truy cập trang tham chiếu Curl_SetOpt () để biết thêm thông tin về curl_setopt () và danh sách đầy đủ các tùy chọn.

curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($curl_connection, CURLOPT_USERAGENT,
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
    curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

Chúng ta đặt những tùy chọn nào ở đây?

Đầu tiên, chúng tôi đặt thời gian chờ kết nối thành 30 giây, vì vậy chúng tôi không có tập lệnh chờ đợi vô thời hạn nếu máy chủ từ xa không trả lời.

Sau đó, chúng tôi đặt cách Curl sẽ tự xác định với máy chủ từ xa. Một số máy chủ sẽ trả về nội dung khác nhau cho các trình duyệt khác nhau (hoặc tác nhân, chẳng hạn như nhện của các công cụ tìm kiếm), vì vậy chúng tôi muốn yêu cầu của chúng tôi trông giống như nó đến từ một trình duyệt phổ biến.

Curlopt_returntransfer được đặt thành các lực true curl không hiển thị đầu ra của yêu cầu, mà trả về nó dưới dạng chuỗi.

Sau đó, chúng tôi đặt tùy chọn Curlopt_SSL_Verifypeer thành FALSE, do đó yêu cầu sẽ không kích hoạt lỗi trong trường hợp chứng chỉ SSL không hợp lệ, hết hạn hoặc không ký.

Cuối cùng, chúng tôi đặt Curlopt_FollowLocation thành 1 để hướng dẫn Curl theo vị trí của Google: Các chuyển hướng được tìm thấy trong các tiêu đề được gửi bởi trang web từ xa.

Bây giờ chúng tôi phải chuẩn bị dữ liệu mà chúng tôi muốn đăng. Trước tiên chúng ta có thể lưu trữ điều này trong một mảng, với khóa của một phần tử giống như tên đầu vào của một biểu mẫu thông thường và giá trị là giá trị mà chúng ta muốn đăng cho trường đó.

Ví dụ: nếu ở dạng thông thường, chúng tôi sẽ có:



Chúng tôi thêm điều này vào mảng của chúng tôi như thế này:

$post_data['firstName'] = 'Name';
$post_data['action'] = 'Register'

Làm tương tự cho mọi trường mẫu.

Dữ liệu sẽ được đăng ở định dạng sau: key1 = value1 & key2 = value2

Để định dạng dữ liệu như thế này, chúng tôi sẽ tạo các chuỗi cho từng cặp giá trị khóa (ví dụ: key1 = value1), hãy đặt chúng vào một mảng khác ($ post_items) sau đó kết hợp chúng trong một chuỗi bằng cách sử dụng chức năng PHP Iliverde () .

  foreach ( $post_data as $key => $value) 
    {
        $post_items[] = $key . '=' . $value;
    }

$post_string = implode ('&', $post_items);

Tiếp theo, chúng ta cần nói cho Curl chúng ta muốn đăng chuỗi nào. Đối với điều này, chúng tôi sử dụng tùy chọn curlopt_postfields.

curl_setopt ($ curl_connection, curlopt_postfields, $ post_string); Cuối cùng, chúng tôi thực hiện bài đăng, sau đó đóng kết nối.

$result = curl_exec($curl_connection);
curl_close($curl_connection);

Đến bây giờ, dữ liệu đáng lẽ phải được đăng lên URL từ xa. Đi kiểm tra điều này và nếu nó không hoạt động đúng, hãy sử dụng hàm Curl_GetInfo () để xem bất kỳ lỗi nào có thể xảy ra.

print_r(curl_getinfo($curl_connection));

Dòng này hiển thị một mảng thông tin liên quan đến việc chuyển nhượng. Điều này phải được sử dụng trước khi đóng kết nối với curl_close ();

Bạn cũng có thể thấy số và mô tả về lỗi bằng cách xuất ra curl_errno ($ curl_connection) và curl_error ($ curl_connection).

Vì vậy, hãy để Lôi đặt mọi thứ lại với nhau. Đây là mã của chúng tôi:

 $value) {
    $post_items[] = $key . '=' . $value;
}

//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);

//create cURL connection
$curl_connection = 
  curl_init('http://www.domainname.com/target_url.php');

//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, 
  "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

//perform our request
$result = curl_exec($curl_connection);

//show information regarding the request
print_r(curl_getinfo($curl_connection));
echo curl_errno($curl_connection) . '-' . 
                curl_error($curl_connection);

//close the connection
curl_close($curl_connection);

?>

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

Việc sử dụng Curl trong PHP Curl là tiện ích mở rộng PHP cho phép bạn sử dụng cú pháp URL để nhận và gửi dữ liệu.Curl làm cho nó đơn giản để kết nối giữa các trang web và tên miền khác nhau.cURL is a PHP extension that allows you to use the URL syntax to receive and submit data. cURL makes it simple to connect between various websites and domains.

Phương pháp để gửi biểu mẫu trong PHP là gì?

Sử dụng thuộc tính hành động để gửi yêu cầu đến tệp PHP khác.Phương pháp này được sử dụng để có được thông tin hoặc đăng thông tin như được nhập vào biểu mẫu.Sử dụng phương thức ISSET () trong PHP để kiểm tra biểu mẫu được gửi thành công hay không.Trong mã, sử dụng hàm isset () để kiểm tra phương thức $ _post ['gửi'].$_POST['submit'] method.

Curlfile là gì?

Tệp tải lên Curl cho phép bạn gửi dữ liệu đến một máy chủ từ xa.Công cụ dòng lệnh hỗ trợ các biểu mẫu web tích hợp cho mọi hệ thống web.allows you to send data to a remote server. The command-line tool supports web forms integral to every web system.

Curlopt_postfields là gì?

Nó trả về một con trỏ cho một chuỗi được mã hóa có thể được truyền dưới dạng postdata.Sử dụng curlopt_postfields ngụ ý cài đặt curlopt_post thành 1. Nếu curlopt_postfields được đặt rõ ràng thành null thì libcurl sẽ lấy dữ liệu bài viết từ cuộc gọi lại đọc.. Using CURLOPT_POSTFIELDS implies setting CURLOPT_POST to 1. If CURLOPT_POSTFIELDS is explicitly set to NULL then libcurl will get the POST data from the read callback.