只是想提交一份表格

时间:2011-12-01 10:57:04

标签: php curl

  

可能重复:
  cURL: Just trying to download a page

我正在尝试提交this表单而不使用cURL填充任何字段。

我试过这个:

<?php

//set POST variables
$url = 'http://www.tourism.verona.it/_vti_g1_srSf.aspx?rpstry=3_';

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,0);

//execute post
$result = curl_exec($ch);

//echo $result;

//close connection
curl_close($ch);

但是输出只是同一页面(我希望提交表单后显示的页面包含酒店列表)。

4 个答案:

答案 0 :(得分:1)

我建议以下选项:

curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, "");
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); //make sure apache is able to write
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //make sure apache is able to write
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");


CURLOPT_POST - to make a POST request
CURLOPT_POSTFIELDS - to send POST data
CURLOPT_FOLLOWLOCATION - for dealing with redirect.

其他3个对大多数网站都有用,你最好使用cookies然后试图找出它不起作用的原因。

答案 1 :(得分:1)

//set POST variables
$url = 'http://www.tourism.verona.it/_vti_g1_srSf.aspx?rpstry=3_';

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,'var1=value1;var2=value2');

//execute post
$result = curl_exec($ch);

//echo $result;

//close connection
curl_close($ch);

答案 2 :(得分:1)

即使您可以手动提交表单而不填写详细信息,这些字段仍会发送到服务器。

如果您没有传递字段,则设置字段的检查服务器端将失败:

if (isset($_POST['srSearchForm:lstStruttura'])) { ...

此外,他们正在使用POST-REDIRECT-GET模式将帖子重定向到GET网址。也许你可以直接进入http://www.tourism.verona.it/_vti_g1_srSr.aspx?rpstry=3_,因为这样可以避免POST的全部需要。

答案 3 :(得分:0)

您确定要获得所有需要设置的变量集吗?在他们的页面上检查您需要填写表格的确定值!