메뉴 건너뛰기

프로그램언어

조회 수 3502 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

PHP GET,POST 요청시 응답결과를 소켓을 이용하여 PHP변수(문자열)로 받기

 

보통의 URL요청(브라우저 주소창에 홈페이지 주소 입력)은 요청주소 외에 전송데이터가 있든 없든 GET전송 요청이다.

POST전송은 <form>이 존재해야 하며 method를 post로 명시해야 한다.

 

이러한 <form>이 포함된 요청페이지를 서버에서 처리해야 하거나

요청 후 응답페이지를 브라우저로 보내기전에 가공해야할 필요가 있을때 fsockopen()을 이용한 웹접속을 이용하면 된다.


//GET 전송

function http_get($host, $path, $data, $cookie) {

    $http_response = "";

 

    $fp = fsockopen($host, 80);

 

    fputs($fp, "GET ".$path." HTTP/1.1\r\n");

    fputs($fp, "Host: ".$host."\r\n");

    fputs($fp, "User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n");

    fputs($fp, "Referer: http://".$host.$path."\r\n");

    fputs($fp, "Cookie: ".$cookie."\r\n");

    fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");

    fputs($fp, "Content-Length: ".strlen($data)."\r\n");

    fputs($fp, "Connection: close\r\n\r\n");

    fputs($fp, $data);

 

    while (!feof($fp)) {

        $http_response .= fgets($fp, 128);

    }

 

    fclose($fp);

 

    return $http_response;

}

 

$html = http_get("blog.naver.com", "/csaiur/220210546540", "", "");

echo "<xmp>".$html."</xmp>";



 

//POST 전송

function http_post($host, $path, $data, $cookie) {

    $http_response = "";

 

    $fp = fsockopen($host, 80);

 

    fputs($fp, "POST ".$path." HTTP/1.1\r\n");

    fputs($fp, "Host: ".$host."\r\n");

    fputs($fp, "User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n");

    fputs($fp, "Referer: http://".$host.$path."\r\n");

    fputs($fp, "Cookie: ".$cookie."\r\n");

    fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");

    fputs($fp, "Content-Length: ".strlen($data)."\r\n");

    fputs($fp, "Connection: close\r\n\r\n");

    fputs($fp, $data);

 

    while (!feof($fp)) {

        $http_response .= fgets($fp, 128);

    }

 

    fclose($fp);

 

    return $http_response;

}

 

$html = http_post("blog.naver.com", "/PostList.nhn", "blogId=csaiur&from=postList&categoryNo=12", "");

echo "<xmp>".$html."</xmp>";

 

 

//POST 전송 SSL

function https_post($host, $path, $data, $cookie) {

    $http_response = "";

    $errno = array();

    $errstr = array();

    $timeout = 30;

 

    $fp = fsockopen("ssl://".$host, 443, $errno, $errstr, $timeout);

 

    fputs($fp, "POST ".$path." HTTP/1.1\r\n");

    fputs($fp, "Host: ".$host."\r\n");

    fputs($fp, "User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n");

    fputs($fp, "Referer: http://".$host.$path."\r\n");

    fputs($fp, "Cookie: ".$cookie."\r\n");

    fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");

    fputs($fp, "Content-Length: ".strlen($data)."\r\n");

    fputs($fp, "Connection: close\r\n\r\n");

    fputs($fp, $data);

 

    while (!feof($fp)) {

        $http_response .= fgets($fp, 128);

    }

 

    fclose($fp);

 

    return $http_response;

}

전송하는 데이터가 없고 쿠키를 유지할 필요가 없거나 URL의 Response를 단순히 문자열로 받고자 할경우에는 fopen()을 이용해도 된다.

//요청URL의 결과를 가져와 문자열로 리턴

function get_text($url) {

    $text = "";

 

    if ($fp = @fopen($url, "r")) {

        while (!feof($fp)) {

            $s = fread($fp, 1);

            $text .= $s;

        }

        fclose($fp);

    }

 

    return $text;

}

 

$html = get_text("http://blog.naver.com/csaiur/220210546540");

echo "<xmp>".$html."</xmp>";


List of Articles
번호 제목 날짜 조회 수
300 addslashes — 문자열을 슬래시로 인용 2016.12.23 23083
299 PHP 삼항연산자 ? file 2015.04.14 22947
298 phpexcel을 이용한 PHP로 엑셀파일 읽기와 생성 file 2017.03.06 22787
297 PHP 로그인후 현재 페이지로 돌아오기 처리 2014.04.12 22662
296 php한글체크를 위한 정규표현식 2014.04.12 22458
295 PHP 파일 다루기 2015.04.14 22401
294 PHP에서 CSV 파일 export file 2016.04.22 22335
293 array_key_exists 배열에서 key가 존재하는지 확인 2016.12.23 22206
292 PHP에서 조건문 처리 2015.04.14 22038
291 파일 확장자 비교 2016.12.23 21970
290 접속 IP 검사 2015.04.14 21871
289 iframe 사용시 iframe의 높이가 내용의 높이만큼 자동으로 조절 2014.04.12 21862
288 php 파일 다운로드 구현 2014.04.12 21699
287 PHPExcel 클래스를 이용해 Excel 2007~2010 의 xlsx 파일 읽기 (100만 행 까지) 2017.03.06 21695
286 파일시스템, 폼 파일업로드 관련 함수 2017.03.27 21681
285 날짜 계산하기 (하루전 날짜 구하기) 2014.02.27 21627
284 특수문자 없애는 정규표현식 2014.03.26 21623
283 array_push 배열 끝에 하나 이상의 요소를 추가 2016.12.23 21604
282 유용한 함수 모음 2014.02.27 21422
281 call_user_func 사용자가 정의한 함수를 호출하여 실행고자 할 때 사용 2016.12.23 21302
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved