php curl发送帖子数据问题

时间:2016-07-27 16:03:35

标签: php curl libcurl

我试图通过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>

似乎表单未提交。因为我可以在没有表单提交的情况下获取正在加载的数据。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

首先我要提一下,您不必构建帖子数据的查询字符串。你可以传递数组。

请尝试设置HTTP标头。与内容类型,用户代理等一样,目标网站可能会检查标题。

但最重要的部分是设置Content-Type: application/x-www-form-urlencoded HTTP标头。

curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/x-www-form-urlencoded']);