2012-06-14 3 views
3

POST 데이터를 다른 웹 페이지로 보내고 결과를 다시 얻으려면 PHP (아마 JS가 필요함)를 사용하여 스크립트를 만들고 싶습니다.외부 웹 사이트에서 양식을 제출하고 HTML을 생성하는 방법은 무엇입니까?

예를 들어, 도메인 A에는 텍스트 상자와 제출 단추가있는 양식이 있고 도메인 B에는 텍스트 상자를 채우고 제출 단추를 누른 다음 생성 된 HTML 페이지를 반환하는 스크립트가 있습니다.

+1

JS 사용 : 다른 웹 사이트에 양식을 게시 할 수 있지만 생성 된 HTML을 가져올 수 없습니다. 서버 측 양식 제출 프록시가 필요합니다. –

+0

가능한 복제본 [PHP를 사용하여 웹 사이트 (자바 스크립트 웹 사이트) 스크랩] (http://stackoverflow.com/questions/6654541/scrape-a-website-javascript-website-using-php) – Quentin

+0

확인. 어떻게 양식을 게시 할 수 있습니까? – sczdavos

답변

6

다음 줄

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

지금 $ 결과는 다른 웹 사이트에서받은 텍스트를 포함, 다른 PHP 스크립트에 기록 할 수 있습니다.

+0

내가 오류 얻을 입력 할 때 : 공지 사항 : 정의되지 않은 인덱스 : 안녕하세요 C에서 : \ XAMPP \ htdocs를 \ 라인에 프록시 \의 test.php를 6 공지 사항 : 정의되지 않은 변수 : C에서 fields_string : \ XAMPP \ htdocs에 \ proxy \ test.php on line 10 도움 말 하시겠습니까? – user1797443

1

JS : 보안상의 이유로 아닙니다. Same origin policy을 읽으십시오.

PHP를 사용하면 다른 서버를 포함하여 POST을 비롯하여 원하는 것을 할 수 있습니다. 예를 들어 CURL을 사용합니다. 코드의

+1

왜 downvote입니까? –

-1

--- 원본 2012 답변 ---

jquery; 그냥 $ .ajax() 호출로 페이지를로드하십시오. 필요한 경우 다른 도메인의 페이지 호출 사이의 제한 사항을 해결하는 "jsonp"를 사용할 수 있습니다.

자바 스크립트 사용에 대한 좋은 점은 서버 측 언어가 필요 없다는 것입니다.

--- 2018 편집 --- 지금은 웹 사이트 양식 등을 받아들이는 경우 JSONP와 POST를 할 수 없다 (이 본질적으로 읽기 전용) 그래서에만 동작 인식

GET (즉, URL의 매개 변수). 그렇지 않으면 다른 답변에서 제안 된 것과 같이 Curl 또는 유사한 것을 사용하는 것이 가장 좋습니다.

관련 문제