У меня есть простая форма, которую я хочу преобразовать в бэкэнд-систему PHP.CURL не публикует данные по адресу
В настоящее время эта форма содержит действие, отправляемое на URL-адрес: URL-адрес принимает приглашение только тогда, когда отправляются данные с именем postdata
и исправлена информация (xml, которая была закодирована).
Работы: - Обратите внимание, что имя входа называется postdata
и значение содержит xml
, который был urlencoded
и она прекрасно работает.
<form name="nonjava" method="post" action="https://url.com">
<input name="postdata" id="nonjavapostdata" type="hidden" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;" />
<button type="submit" name="submit">Button</button>
</form>
Однако я хочу, чтобы достичь следующего пути перемещения postdata
элемента в PHP, как много информации проходят через этот путь.
Обратите внимание: ссылка https, но она не работала на локальном компьютере, поэтому мне пришлось отключить ее в CURL.
<?php
$url = 'https://super.com';
$xmlData = '<?xml version="1.0" encoding="utf-8"?>
<postdata
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<api>2</api>
</postdata>';
$testing = urlencode($xmlData);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "postdata=" . $testing);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$response = curl_exec($ch);
// Then, after your curl_exec call:
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
echo $header_size . '<br>';
echo htmlspecialchars($header) . '<br>';
echo htmlspecialchars($body) . '<br><br>';
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "$http_status for $url <br>";
?>
я получаю ошибку 302 (который является содержание URL не находит данные, чтобы его перенаправление на странице не найден.)
Я думаю, что вы ищете флаговый флаг CURLOPT_FOLLOWLOCATION – Smokie