0

我有 2 个站点,一个主要站点,一个外部站点。在主站点上,我使用 Lucene 进行搜索。问题是,我也在尝试搜索外部站点。

外部站点的表单操作:

<form action="https://secure.bcchf.ca/SuperheroPages/searchResults.cfm?Event=WOT" method="post" name="search_tribute" >

我尝试使用 curl,但它只显示搜索表单而没有实际进行搜索(该字段也是空的)。

<?php
$ch = curl_init("https://secure.bcchf.ca/SuperheroPages/searchResults.cfm?Event=WOT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, tname='hello');
$output = curl_exec($ch);
echo $output;
curl_close($ch);
?>

有小费吗?

我无权访问表单操作,因为它位于外部站点上。我所拥有的只是一个在我提交时链接到它的表单。

4

4 回答 4

1
<?php
$ch = curl_init("https://secure.bcchf.ca/SuperheroPages/searchResults.cfm?Event=WOT");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array("teamName" => "hello", "searchType" => "team"));
$output = curl_exec($ch);
echo $output;
curl_close($ch);
?>

你能试试这个吗?我很确定它应该是 teamName 而不是 tName

于 2013-06-11T20:44:20.257 回答
0

尝试将其放入数组中。因为这将是 $_POST 在另一边检查的变量

并且刚刚检查了您的链接,它的团队名称为该字段

$fields = array("teamName"=>"julia");

然后..

curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

所以你的完整代码是......

<?php
 $ch = curl_init("https://secure.bcchf.ca/SuperheroPages/searchResults.cfm?Event=WOT");
 $fields = array("teamName"=>"julia");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_POST, true);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
 $output = curl_exec($ch);
 var_dump($output);
 curl_close($ch);
 ?>
于 2013-06-11T19:14:30.580 回答
0

大多数搜索引擎使用GET而不是POST..您可以尝试

// asumption
$_POST['search'] = "hello";

// Return goole Search Result
echo curlGoogle($_POST['search']);

function curlGoogle($keyword) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/search?hl=en&q=' . urlencode($keyword) . '&btnG=Google+Search&meta=');
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FILETIME, true);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

或者如果你想发帖

curl_setopt($ch, CURLOPT_POSTFIELDS, array("search"=>"hello"));
于 2013-06-11T19:15:45.670 回答
0

您的 php 代码语法无效,无法编译。

因此,如果这确实是您所拥有的,那么您的问题是您的文件会产生致命错误。

话虽如此,这个问题很难回答,因为我们不知道您要从中获取搜索结果的网站。

尝试像这样修改您的行:

curl_setopt($ch, CURLOPT_POSTFIELDS, "search=hello");

或者

curl_setopt($ch, CURLOPT_POSTFIELDS, array("search" => "hello");

也许它会起作用,但是可能需要更多的帖子数据或元素名称不正确。

您必须查看表单或尝试提出请求并使用 chrome 开发人员工具或萤火虫查看它。

外部站点也有多种方法可以阻止您正在做的事情,尽管可以以某种方式解决所有问题。

假设不是这样,我希望我能帮助你。

于 2013-06-11T19:17:06.703 回答