Я прочитал много статей и обсуждений (также в Stackoverflow), но я не нашел решения.
У меня есть форма с действием на внешний веб-сайт.
Мне нужно отправить свою форму, получая ответ от этого сайта (заголовок ответа моего http-запроса хорош). Является ли это возможным?
Я пытался с curl (CURLOPT_RETURNTRANSFER true), но, возможно, что-то не так в моем следующем коде:
$post_data['xx'] = 'xxx';
$post_data['yy'] = 'yyy';
$post_data['zz'] = '13-12-2015';
$postData = '';
foreach($post_data as $k => $v)
{
$postData .= $k . '='.$v.'&';
}
rtrim($postData, '&');
$url = 'http://......';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec ($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $http;
curl_close ($ch);
Возвращаемое значение равно «0».
Спасибо!
Если я выбрал то, что вы ищете, позвольте мне предположить, что это решение:
main.php
<form method=post action=target.php><input name=mypostdata type=text ><input type=submit ></form><?php`include("curl.php");?>
Target.php
<?php if( isset($_POST['mypostdata']) ){echo "<span>done</span>";}else{}?>
curl.php
<?php function file_get_contents_curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$html = file_get_contents_curl("target.php");
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('span');
//get and display what you need:
$response = $nodes->item(0)->nodeValue;
echo $response;
?>
Других решений пока нет …