메뉴 건너뛰기

Dev tips

PHP file_get_content 사용하기 GET, POST

taknim 2009.08.26 01:50 조회 수 : 10641 추천:2666

http://kr2.php.net/manual/en/function.stream-context-create.phphttp://url 에 있는 내용을 가져오기 위해 여러가지 방법이 있겠지만
PHP에서는 file_get_content 함수를 사용해 쉽게 가져올 수가 있다.

아래와 같이 실행 하면 $content 에 http://url 을 호출해서 불러온 내용들을 바로 가져올수가 있다.
<?
$content = file_get_contents("http://url");
?>

물론 파라미터 전송을 할때는 ?aaa=bbb&ccc=ddd 와 같이 문자열을 구성해 url 에 붙이면 된다.
<?
$content = file_get_contents("http://url?aaa=bbb&ccc=ddd ");
?>

자~ 이제 여기서 문제가 하나 생기게 된다.
위와 같이 확인을 해보면 GET 으로만 사용이 가능하다는걸 알 수 있다.
그럼 POST 는? 그리고 프로토콜이 http 가 아니라 https 이면?

https 부터 말하자면 url 에서 http를 https 로 바꾸면 된다.
자~ 그럼 POST 는 어떻게 해야할까? 물론 방법이 있다.
아래와 같이 option 을 지정해놓고 사용해보자.

<?
$data = array ('foo' => 'bar', 'bar' => 'baz'); // post 로 받을 데이터들
$data = http_build_query($data); // url_encode 를 한 후 파라미터 구성을 해준다.

// http 통신 option을 지정한다. https 라고 해서 http 키값을 https 로 변경하지 말것.(주소에 https 라고 쓰기만 하면 된다.)
// http 배열 키 설명
// method 는 get, post 중 하나
// header 은 상황에 맞게 바꿔주면 된다.
// content 는 보낼 파라미터나 데이터를 구성
$context_options = array (
        'http' => array (
            'method' => 'POST',
            'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
                . "Content-Length: " . strlen($data) . "\r\n",
            'content' => $data
            )
        );

$context = context_create_stream($context_options);
$content = file_get_contents("http://url", false, $context);
?>