我正在尝试提交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);
但是输出只是同一页面(我希望提交表单后显示的页面包含酒店列表)。
答案 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)
您确定要获得所有需要设置的变量集吗?在他们的页面上检查您需要填写表格的确定值!