2012-06-14 29 views
3

我想使用PHP(可能需要JS)將腳本發送到另一個網頁,並得到結果返回腳本。如何在外部網站上提交表單並獲取生成的HTML?

例如,域A將有一個文本框的格式,並提交按鈕,而域B將有一個腳本這將填補該文本框,然後按提交按鈕,返回生成的HTML頁面。

+1

使用JS:您可能可以將表單發佈到其他網站,但無法生成HTML。你需要一個服務器端表單提交代理。 –

+0

可能的重複[使用php刮取網站(javascript網站)](http://stackoverflow.com/questions/6654541/scrape-a-website-javascript-website-using-php) – Quentin

+0

好的。有沒有可能我怎麼才能發表一個表格? – sczdavos

回答

6

的下面幾行代碼可以在另一個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); 

現在$結果將包含來自其他網站接收到的文本。

+0

當我進入我得到一個錯誤: 注意:未定義指數:你好在C:\ XAMPP \ htdocs中\在線代理\ test.php的6 注意:未定義的變量:fields_string在C:\ XAMPP \ htdocs中\ proxy \ test.php在線10 幫助? – user1797443

1

隨着JS:出於安全原因沒有。請閱讀Same origin policy

使用PHP,你可以做你想做的,包括荷蘭國際集團POST其他服務器。例如使用CURL

+1

爲什麼downvote? –

-1

---原創2012答案---

使用jquery;只需用$ .ajax()調用加載頁面即可。如果你需要,你可以使用「jsonp」來解決調用不同域的頁面之間的限制。

關於使用JavaScript的好處是,你不需要任何服務器端語言。

--- 2018 ---編輯

我,現在你不能做一個POST與JSONP(因爲它基本上是隻讀的),所以這隻會工作,如果網站接受形式實現一個GET(即URL中的參數)。否則,最好使用Curl或類似的建議在其他答案。

相關問題