php curl发送帖子数据问题
我试图通过curl
库来获取页面的数据。我可以用简单的链接来完成,但是当我要提交表单然后获取数据时,我不能。它返回页面的默认值,而不是提交的表单。让我解释一下代码。php curl发送帖子数据问题
$url = ...
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
// I'm sending post data
$params = array(
'madrak'=>5,
'B1' => 'مشاهده اطلاعات'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
// and execute...
我得到的数据页写有asp
和页面的组成部分是:
<input type="submit" value="مشاهده اطلاعات" name="B1">
<select name="madrak" size="1" class="style1" id="1">
<option value="1">زير ديپلم</option>
<option value="5">ديپلم</option>
<option value="6">فوق ديپلم</option>
<option value="7">ليسانس</option>
<option value="8">فوق ليسانس</option>
<option value="9">دكترا</option>
<option selected="" value="6">فوق ديپلم</option>
</select>
看来,形式不被提交。因为只是我可以获取没有提交表单的加载数据。任何想法?
首先我应该提到您不必构建发布数据的查询字符串。你可以传递数组。
请尝试设置HTTP标头。像内容类型,用户代理等,目标网站可能会检查标题。
但最重要的部分是设置Content-Type: application/x-www-form-urlencoded
HTTP标头。
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']);
不,它没有工作。我搜索了'http_build_query',我发现我应该使用这个,但没有这个功能,它不起作用。 –
@vahidnajafi您正在以正确的方式发送数据。您是否尝试设置其他HTTP标头?测试它的最好方法是复制浏览器发送的所有标题,然后如果它仍然没有给出正确的结果,则应考虑启用cookie以进行卷曲。许多网站使用这些措施来防止数据抓取。 –
无论是否使用'http_build_query',它都不起作用。 –
$ info = curl_getinfo($ ch);尝试print_r($ info);获取结果回电。检查HTTP_Code返回值是200还是...? –
@QuỳnhNguyễn它为'http_code'返回我零。但它会返回数据。 –
我不能相信http_code是0,你仍然有数据返回。这是不可能的 –