Мне нужно отправить данные на сайт ASP, используя php curl с моего сайта.
Сайт ASP – http://www.hotfrog.com.au/AddYourBusinessSingle.aspx
Для этого я подошел, как показано ниже
Обход веб-страницы html-источника с этого веб-сайта с использованием PHP curl для поддержки файлов cookie и сеансов
Из этого источника извлекаются скрытые значения asp
Подготовленная строка сообщения с обязательными полями формы
И отправил эти данные для URL-адреса URL-адреса ASP, используя PHP curl, но ответ заключается в том, что информация о форме страницы без сведений о записи и даже не отображает сообщения проверки от завихрения для полей без ввода.
Для этого процесса поддерживаются одинаковые значения для CURLOPT_USERAGENT, CURLOPT_COOKIEJAR, CURLOPT_COOKIEFILE
Для сайта ASP необходимы поля формы, подобные приведенным ниже.
ctl00 $ contentSection $ CompanyDetailsControl $ txtBusinessName
ctl00 $ contentSection $ CompanyDetailsControl $ txtSuburb
они должны быть опубликованы напрямую или там какой-либо кодировки, необходимой для этих имен полей, прежде чем отправлять на целевой сайт с помощью PHP curl
Может ли у кого-нибудь решение для этого решения или любых других подходов к ASP-сайтам с помощью php curl?
использование
function get_headers_from_curl_response($headerContent) { $headers = []; // Split the string on every "double" new line. $arrRequests = explode("\r\n\r\n", $headerContent); // Loop of response headers. The "count() -1" is to //avoid an empty row for the extra line break before the body of the esponse. for ($index = 0; $index < count($arrRequests) - 1; $index++) { foreach (explode("\r\n", $arrRequests[$index]) as $i => $line) { if ($i === 0) { $headers[$index]['http_code'] = $line; } else { list ($key, $value) = explode(': ', $line); $headers[$index][$key] = $value; } } } return $headers; } function regexExtract($text, $regex, $regs, $nthValue) { if (preg_match($regex, $text, $regs)) { $result = $regs[$nthValue]; } else { $result = ""; } return $result; } $regexViewstate = '/__VIEWSTATE\" value=\"(.*)\"/i'; $regexEventVal = '/__EVENTVALIDATION\" value=\"(.*)\"/i'; $ch = curl_init("__YOUR__URL__HERE__"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); $response = curl_exec($ch); curl_close($ch); $viewstate = regexExtract($response, $regexViewstate, $regs, 1); $eventval = regexExtract($response, $regexEventVal, $regs, 1); $params = [ '__EVENTTARGET' => '', '__EVENTARGUMENT' => '', '__VIEWSTATE' => $viewstate, '__EVENTVALIDATION' => $eventval, 'ctl00%24txtUsername' => 'xxx', 'ctl00%24txtPassword' => 'xxx', 'ctl00$ImgLogin.x' => '0', 'ctl00$ImgLogin.y' => '0',]; $ch2 = curl_init("http://gsc.klub-modul.dk/cms/ShowContentPage.aspx?ContentPageID=1"); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch2, CURLOPT_HEADER, 1); curl_setopt($ch2, CURLOPT_POST, true); curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch2, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch2, CURLOPT_COOKIE, 'cookies.txt'); curl_setopt($ch2, CURLOPT_COOKIEJAR, 'cookies2.txt'); $response2 = curl_exec($ch2); curl_close($ch2); foreach (get_headers_from_curl_response($response2) as $value) { foreach ($value as $key => $value2) { echo $key.": ".$value2."<br />"; } }