Я получаю запрос POST на моем PHP-скрипте и хочу переслать этот пост-вызов другому скрипту, используя POST. Как это сделать? Я могу использовать cURL, если это требуется для этого действия.
Может быть:
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
http://www.php.net/manual/en/function.curl-setopt.php
Это может быть либо передано как строка с urlencoded, как «para1 = val1 & para2 = val2 & …», или как массив с именем поля в качестве ключа и данных поля как значение.
Сделай это,
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($_POST));
<?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 need any http auth $username = 'http-auth-username'; $password = 'http-auth-password'; $requestType = 'POST'; // this can be PUT or POST // this can be $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 $arrResponse = 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 request json data ), // if required HTTP Authentication use below lines CURLOPT_HTTPAUTH => CURLAUTH_BASIC, CURLOPT_USERPWD => $username. ':' . $password ));
Если кому-то это нужно, вот полнофункциональный запрос cURL, который перенаправляет $ _POST, где вы хотите (на основе ответа ZZ-кодера выше)
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://urlOfFileWherePostIsSubmitted.com"); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // ZZ coder's part curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST)); $response = curl_exec($ch); curl_close($ch);