Làm thế nào để bạn chuyển $_POST
các giá trị cho một trang bằng cách sử dụng cURL
?
Làm thế nào để bạn chuyển $_POST
các giá trị cho một trang bằng cách sử dụng cURL
?
Câu trả lời:
Nên hoạt động tốt.
$data = array('name' => 'Ross', 'php_master' => true);
// You can POST a file by prefixing with an @ (for <input type="file"> fields)
$data['file'] = '@/home/user/world.jpg';
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
curl_exec($handle);
curl_close($handle)
Chúng tôi có hai tùy chọn ở đây, CURLOPT_POST
bật HTTP POST và CURLOPT_POSTFIELDS
chứa một mảng dữ liệu bài đăng của chúng tôi để gửi. Điều này có thể được sử dụng để gửi dữ liệu cho POST
<form>
s.
Điều quan trọng cần lưu ý là curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
lấy dữ liệu $ ở hai định dạng và điều này xác định cách dữ liệu bài đăng sẽ được mã hóa.
$data
as an array()
: Dữ liệu sẽ được gửi như một dữ liệu multipart/form-data
không phải lúc nào cũng được máy chủ chấp nhận.
$data = array('name' => 'Ross', 'php_master' => true);
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
$data
dưới dạng chuỗi mã hóa url: Dữ liệu sẽ được gửi dưới dạng application/x-www-form-urlencoded
, đây là mã hóa mặc định cho dữ liệu biểu mẫu html đã gửi.
$data = array('name' => 'Ross', 'php_master' => true);
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($data));
Tôi hy vọng điều này sẽ giúp những người khác tiết kiệm thời gian của họ.
Xem:
Ross có ý tưởng phù hợp để ĐĂNG định dạng tham số / giá trị thông thường vào một url.
Gần đây, tôi đã gặp phải tình huống mà tôi cần ĐĂNG một số XML dưới dạng Content-Type "text / xml" mà không có bất kỳ cặp tham số nào, vì vậy đây là cách bạn thực hiện điều đó:
$xml = '<?xml version="1.0"?><stuff><child>foo</child><child>bar</child></stuff>';
$httpRequest = curl_init();
curl_setopt($httpRequest, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($httpRequest, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
curl_setopt($httpRequest, CURLOPT_POST, 1);
curl_setopt($httpRequest, CURLOPT_HEADER, 1);
curl_setopt($httpRequest, CURLOPT_URL, $url);
curl_setopt($httpRequest, CURLOPT_POSTFIELDS, $xml);
$returnHeader = curl_exec($httpRequest);
curl_close($httpRequest);
Trong trường hợp của tôi, tôi cần phải phân tích cú pháp một số giá trị ra khỏi tiêu đề phản hồi HTTP, vì vậy bạn có thể không nhất thiết phải đặt CURLOPT_RETURNTRANSFER
hoặc CURLOPT_HEADER
.
$query_string = "";
if ($_POST) {
$kv = array();
foreach ($_POST as $key => $value) {
$kv[] = stripslashes($key) . "=" . stripslashes($value);
}
$query_string = join("&", $kv);
}
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
$url = 'https://www.abcd.com/servlet/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($kv));
curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$result = curl_exec($ch);
curl_close($ch);
Một ví dụ PHP đơn giản khác về việc sử dụng cURL:
<?php
$ch = curl_init(); // Initiate cURL
$url = "http://www.somesite.com/curl_example.php"; // Where you want to post data
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true); // Tell cURL you want to post something
curl_setopt($ch, CURLOPT_POSTFIELDS, "var1=value1&var2=value2&var_n=value_n"); // Define what you want to post
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return the output in string format
$output = curl_exec ($ch); // Execute
curl_close ($ch); // Close cURL handle
var_dump($output); // Show output
?>
Ví dụ được tìm thấy tại đây: http://devzone.co.in/post-data-using-curl-in-php-a-simple-example/
Thay vì sử dụng curl_setopt
bạn có thể sử dụng curl_setopt_array
.
curl_setopt($ch, CURLOPT_POSTFIELDS, "var1=value1&var2=value2&var_n=value_n"); // Define what you want to post
cung cấp cho tôi những gì tôi đang tìm kiếm :)
Hãy xem trang này có ví dụ về cách thực hiện.
Kiểm tra trang tài liệu cUrl PHP . Nó sẽ giúp ích nhiều hơn là chỉ với các tập lệnh ví dụ.
$url='Your url'; // Specify your url
$data= array('parameterkey1'=>value,'parameterkey2'=>value); // Add parameters in key value
$ch = curl_init(); // Initialize cURL
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
<?php
function executeCurl($arrOptions) {
$mixCH = curl_init();
foreach ($arrOptions as $strCurlOpt => $mixCurlOptValue) {
curl_setopt($mixCH, $strCurlOpt, $mixCurlOptValue);
}
$mixResponse = curl_exec($mixCH);
curl_close($mixCH);
return $mixResponse;
}
// If any HTTP authentication is needed.
$username = 'http-auth-username';
$password = 'http-auth-password';
$requestType = 'POST'; // This can be PUT or POST
// This is a sample array. You can use $arrPostData = $_POST
$arrPostData = array(
'key1' => 'value-1-for-k1y-1',
'key2' => 'value-2-for-key-2',
'key3' => array(
'key31' => 'value-for-key-3-1',
'key32' => array(
'key321' => 'value-for-key321'
)
),
'key4' => array(
'key' => 'value'
)
);
// You can set your post data
$postData = http_build_query($arrPostData); // Raw PHP array
$postData = json_encode($arrPostData); // Only USE this when request JSON data.
$mixResponse = executeCurl(array(
CURLOPT_URL => 'http://whatever-your-request-url.com/xyz/yii',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPGET => true,
CURLOPT_VERBOSE => true,
CURLOPT_AUTOREFERER => true,
CURLOPT_CUSTOMREQUEST => $requestType,
CURLOPT_POSTFIELDS => $postData,
CURLOPT_HTTPHEADER => array(
"X-HTTP-Method-Override: " . $requestType,
'Content-Type: application/json', // Only USE this when requesting JSON data
),
// If HTTP authentication is required, use the below lines.
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_USERPWD => $username. ':' . $password
));
// $mixResponse contains your server response.