根据您对上述评论的回答,您想要做的不是用curl“填写表单”,而是将完成的表单发布到表单通常发送到的同一页面。
这也称为跨站点发布,许多开发人员专门测试并不允许它提高安全性。如果表单有验证码,这也会困难得多。
假设这样做仍然有意义(我之前在新闻通讯注册表单中使用过这种技术),这就是您想要做的:
要获取表单的操作 URL,您需要查看网站的 Javascript 代码并找到 funcy_function() 的定义位置。然后在函数主体中,您可能会看到目标 url。您还需要记下 html 中表单变量的具体名称。您需要使用完全相同的名称设置变量。然后你的卷曲设置将如下所示:
$url = 'http://www.targeturl.com';
$myvars = 'myvar1=' . $myvar1 . '&myvar2=' . $myvar2;
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec( $ch );
这会将 post 变量发送到指定的 url,模仿表单中通常发生的情况。如果您想解析或使用页面返回的 html,它将位于 $response 中。