我想使用PHP(可能需要JS)將腳本發送到另一個網頁,並得到結果返回腳本。如何在外部網站上提交表單並獲取生成的HTML?
例如,域A將有一個文本框的格式,並提交按鈕,而域B將有一個腳本這將填補該文本框,然後按提交按鈕,返回生成的HTML頁面。
我想使用PHP(可能需要JS)將腳本發送到另一個網頁,並得到結果返回腳本。如何在外部網站上提交表單並獲取生成的HTML?
例如,域A將有一個文本框的格式,並提交按鈕,而域B將有一個腳本這將填補該文本框,然後按提交按鈕,返回生成的HTML頁面。
的下面幾行代碼可以在另一個PHP腳本編寫,
//set POST variables
$url = 'the website from which you need data through post';
$fields = array(
//post parameters to be sent to the other website
'text'=>urlencode($_POST['text']), //the post request you send to this script from your domain.
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//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,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
現在$結果將包含來自其他網站接收到的文本。
當我進入我得到一個錯誤: 注意:未定義指數:你好在C:\ XAMPP \ htdocs中\在線代理\ test.php的6 注意:未定義的變量:fields_string在C:\ XAMPP \ htdocs中\ proxy \ test.php在線10 幫助? – user1797443
---原創2012答案---
使用jquery;只需用$ .ajax()調用加載頁面即可。如果你需要,你可以使用「jsonp」來解決調用不同域的頁面之間的限制。
關於使用JavaScript的好處是,你不需要任何服務器端語言。
--- 2018 ---編輯
我,現在你不能做一個POST與JSONP(因爲它基本上是隻讀的),所以這隻會工作,如果網站接受形式實現一個GET(即URL中的參數)。否則,最好使用Curl或類似的建議在其他答案。
使用JS:您可能可以將表單發佈到其他網站,但無法生成HTML。你需要一個服務器端表單提交代理。 –
可能的重複[使用php刮取網站(javascript網站)](http://stackoverflow.com/questions/6654541/scrape-a-website-javascript-website-using-php) – Quentin
好的。有沒有可能我怎麼才能發表一個表格? – sczdavos