본문 바로가기

프로그래밍/PHP

POST 방식의 웹페이지 출력하기(php)

웹에서 정보를 긁어올 때가 있습니다.

저는 정규표현식이 아닌 xpath를 이용하여 필요한 정보를 파싱해서 가져옵니다.
제 생각에는 정규표현식을 사용하는 것보다 이게 더 적절한 방식인 것 같습니다.


php에서 xpath를 이용하려면 dom객체를 생성하여 html파일을 로드해야하는데요, 이 때 로드할 파일을 넣거나 url을 입력합니다. 
get방식으로 정보를 전송하는 페이지의 경우에는 url에 필요한 정보를 다 넣을 수 있어서 문제가 없지만, post방식은 url로 원하는 페이지를 요청할 수 없죠.

그렇기 때문에 중간(중개) 페이지가 하나 필요합니다.
이 중간 페이지는 최종적으로 원하는 페이지를 로드하기 위해 post로 정보를 전송하고, 요청된 페이지를 출력해주는 역할을 합니다. 
그래서 중간 페이지를 주소창에 입력하면, 우리가 원하는 최종 페이지를 볼 수 있어야하겠죠?



이러한 중간 파일을 만들 때 들어가야할 코드입니다.



$postdata = http_build_query(
    array(
        'var1' => 'some content',
        'var2' => 'doh'
    )
);

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);

$context  = stream_context_create($opts);

$result = file_get_contents('http://post.php', false, $context);
echo $result;