0

我需要在外部网站上远程提交/处理表单并将结果返回到我的网站上。用户无法意识到这种交互。

我能够使用 HTML PHP/Simple_Html_Dom 获取数据

<?php
require "DOM/simple_html_dom.php";

$html = file_get_html('website.com/pricing');
foreach ($html->find('div[id=Price]') as $result)
{
    echo $result->innertext;
}

?>

它正在返回,PRICE 为 N/A。我需要能够传递字段的值。我希望将它们作为隐藏值传递,例如<input type="hidden" name="QTY" value="100" />

什么是正确的语法和/或我如何完成这项任务?

我试过了:

$html->load('<html><body
<form action="website.com/..." method="post" name="Pricing" > 
#all hidden fields & values
</form></body></html>')

有任何想法吗?谢谢您的帮助。理想情况下,我正在尝试在我的页面上重新创建表单并使用 AJAX 实时获取查询结果。

--更多数据--此页面正在使用会话:(这对 POST 有何影响?)

{
"headers": {
"Date": "Mon, 24 Sep 2012 19:23:58 GMT",
"Server": "Apache",
"Set-Cookie": "JSESSIONID=01987F6C188624B08885FE26644300DA.worker2; Path=/g",
"Cache-Control": "no-cache",
"Pragma": "no-cache",
"P3P": "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"",
"Vary": "Accept-Encoding",
"Connection": "close",
"Transfer-Encoding": "chunked",
"Content-Type": "text/html;charset=UTF-8"
},
4

1 回答 1

0

您不能访问或修改来自另一个域的通过 AJAX 传入的数据。此类请求具有相同的域策略,因此可以防止各种类型的黑客攻击(例如嗅探某人的浏览器以获取其银行帐户详细信息)。

如果您无法控制有问题的页面,那么(正如您的研究建议的那样)您可以选择PHP Proxy。但是,这样做的缺点是无法处理 JavaScript 本身,从而使远程表单中的所有动态字段对您的 PHP 脚本不可见。

关于 cookie,cURL 应自动为您处理 cookie。查看curl_setopt() 手册以获取有关 cURL 设置的信息。

于 2012-09-24T19:29:25.020 回答