質問

私はCURLとPHPを使用してURLを投稿したい。

があり、大きなフォームでは、Webページ上にあると私はすべての変数を手動でコピーしたいと私のPOSTリクエストに入れないでください。

私はそこ(DOMか何かを使用して)自動的にフォームをシリアル化するための方法である必要があり、その後、ちょうど私が必要とするものは何でも値を変更推測しています。

私は誰もが親切に役立つことであろう思っていたので、私はこの1つの外に自分の道をグーグルことができませんでした。

だから、自動的に私はURLから引き出さHTMLコンテンツの束に埋設されているフォームをシリアル化するために、とにかく何ですか?

任意の助けてくれてありがとう、 アンドリュー

役に立ちましたか?

解決

$http = new HttpQueryString();
$http->set($_POST);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$http->get());

タグ> = 0.22.0 PECLのpecl_httpが必要です

他のヒント

は、サーバーまたはどのようにカールリクエストでポストフォームを配置すると、ブラウザでフォームを取得する方法を求めている場合は、その私にはクリアしません。

:PHPからは、フォームが終わっ投稿仮定し、それはのような単純なものでしょう

ますcurl_setopt($ハンドル、CURLOPT_POSTFIELDS、$ _POST);

はデータがそのように検証されていないのに。

ウェブ側から、ちょうど通常のポストを経由して、それを提出することとは対照的に、あなたは、DOM / Javascriptを使用してフォームをシリアル化する理由がわからない?

わからないどのような質問は本当にですが、どちらかのこのような何かをやりたいと思っています:

$fields_string = http_build_query($data_to_send);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string);

か、このに検討する必要があります:

$html = file_get_html('http://www.thesite.com/thepage.html');
foreach($html->find('input') as $element) 
echo $element->name . '<br>';

私は質問を理解していません。それはあなたが、フォームを画面-こすり、それを記入した後、バックあなたからそれを得たのページに投稿したいのように聞こえます。その権利はありますか?

コメントに応答して、

編集: 私はシンプルなHTML DOM(それは私がPHPでスクレイピングのために使うものです)のようなツールを使用してCURL'd HTMLをこするお勧めします。選択のあなたのライブラリーのドキュメントを使用すると、フォームフィールドを識別するための方法を見つけ出すのに役立ちます。その後、あなたはもちろんurlencode()'dフォームに渡したい値に設定CURL_POST_FIELDS属性で、フォームのアクションページをカールすることをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top