익스플로러 외에 브라우져의 접근이 차단되어있거나 세션등으로 막은 경우 헤더조작이 까다로울 수 있습니다.

저 같은 경우 첫페이지에서 세션에 어떤 값을 넣어 첫페이지를 접근한 후 접속한 것이 아닌 사용자를 차단하는 사이트에서 소스를 얻을 필요가 있었는데요.

빨리 테스트해봐야해서 C#으로 웹브라우져 컴포넌트를 동원해서 작업하는 등 별 삽질을 다 했었습니다.

그.런.데

PHP에서 COM을 이용할 수 있는 함수가 있음을 알고 좌절했습니다. OTL

간단히 함수로 정리했습니다.
자... 보시죠(...)


예제 :
function getHTMLSrc( $url ) {
    // alloc COM (IE)
    $ie = new COM("InternetExplorer.Application");
    $ie->Visible = false;

    $ie->Navigate($url);
    while($ie->readyState!=4); // Loading Complete 확인
   
    $srcHTML = $ie->Document->documentElement->outerHTML;

    // free object
    $ie->Quit();
    unset($ie);

    return $srcHTML;
}


필요사항은

PHP5 이상 Windows version.
.Net 컴포넌트는 PHP5 와 .Net runtime.

뭐 결국 윈도우에 PHP5를 깔고 닷넷컴포넌트는 닷넷프레임워크만 깔아주면 된다는 거죠.

VB나 C#에서 사용하는 것이나 진배없는 속성들에 심하게 당황했습니다. PHP개발자들 대단하네요 -_-;;

COM클래스를 사용하게 되면...
MS Word, MS Excel, mdb 을 비롯한 상용 COM등 COM으로 만들어진 대부분의 처리가 가능한 것 같습니다 OTL

----------------------

예전에 써놨던 포스팅을 이사하면서 실수로 날렸었는데 "체리필터"님의 블로그에서 발견하고 역수입 -_-;;

다만 경험상 저렇게 ie object를 가져다 쓰고 해제해버리면 apache를 restart 시킬때까지 다시 살아나질 않았었다.
해서 최대한 해제하지 않고 한번 생성해서 우려먹었던 기억이...
Posted by freezn