0

メインと外部の 2 つのサイトがあります。メイン サイトでは、Lucene を使用して検索しています。問題は、外部サイトも検索しようとしていることです。

外部サイトの Form アクション:

<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);
?>

これを試すことができますか?tName ではなく teamName であるはずだと確信しています

于 2013-06-11T20:44:20.257 に答える
0

あなたの php コードは有効な構文ではありません。コンパイルできません。

したがって、これが本当にあなたが持っているものである場合、問題はファイルが致命的なエラーを生成することです.

そうは言っても、検索結果を取得したいサイトがわからないため、この質問に答えるのは難しい.

次のように行を変更してみてください。

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

または代わりに

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

うまくいくかもしれませんが、より多くの投稿データが必要であるか、要素名が正しくない可能性があります。

フォームを確認するか、リクエストを作成して chromes 開発者ツールまたは firebug で確認する必要があります。

また、外部サイトがあなたがしていることを防ぐ方法はいくつかありますが、すべては何とか回避できます。

そうではないと仮定して、私はあなたを助けることができることを願っています.

于 2013-06-11T19:17:06.703 に答える
0

配列に入れてみてください。それは $_POST が反対側でチェックする変数になるため

リンク、フィールドの teamName を確認しました

$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 に答える