[英]How to submit retrieve a form from URL and submit it using PHP?
我发现了一项任务,可以提高自己的技能。 任务是从给定的URL获取表单并填写表单。 该表格将有3个输入,分别是名称,电子邮件,一个计数和一个正方形,以及“ x”和“ ”的组合。 填写所有字段,在名为count
的输入框中,我必须填写“ ” 的数量,然后必须提交表单。 我只需要使用PHP。
表单应提交到我获取表单的相同URL。 我尝试使用cURL,但是它再次返回了表单,而不是预期的输出。
if(!empty($_POST)){
echo "<pre>";
print_r($_POST);
echo "</pre>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
$data = $_POST;
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$out = curl_exec($ch);
$inf = curl_getinfo($ch);
curl_close($ch);
echo "<pre>";
print_r($out);
print_r($inf);
echo "</pre>";
exit;
}
提交表单后,我希望收到“感谢提交”。 文本。 相反,我得到的形式与输出相同。
也许问题是您正在以数组形式而不是URL编码发送帖子字段值,请使用http_build_query或json_encode进行检查。
检查以下代码。
if(!empty($_POST)){
echo "<pre>";
print_r($_POST);
echo "</pre>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
$data = $_POST;
/*** you are direct sending the array value
use http_build_query
or
$data_string = json_encode($data);
***/
$data_string = http_build_query($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string );
$out = curl_exec($ch);
$inf = curl_getinfo($ch);
curl_close($ch);
echo "<pre>";
print_r($out);
print_r($inf);
echo "</pre>";
exit;
}
PHP无法对表单做任何事情。 在这种情况下,您应该获取html表单( curl
是一个选项。然后解析表单以获取表单方法(get / post),操作(url)和所有输入名称。
为此,您可以使用xpath之类的东西
在此处,您可以通过根据上述给定信息制作数据来提交另一个请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.