메뉴 건너뛰기

프로그램언어

조회 수 3575 추천 수 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
번호 제목 날짜 조회 수
140 DB 연동 4단 셀렉트 박스 2018.09.28 6395
139 이미지 땡겨와서 출력하기 2018.09.28 5381
138 자바스크립트 이스케이프 문자열을 PHP로 디코딩 하기 2018.10.27 3359
137 PHP 확장 모듈을 이용한 C 라이브러리 사용 2018.10.27 3883
136 PHP eregi가 빠를까, strpos가 빠를까? 2018.10.27 4200
135 PHP split()와 explode()의 차이점 2018.10.27 3605
134 PHP XML 문서파싱 (SAX 방식 , DOM 방식) file 2018.10.27 3659
133 PHP 랜덤 문자열 생성 2018.10.27 4194
» PHP 소켓을 이용하여 URL의 응답결과를 문자열로 받기 2018.10.27 3575
131 PHP 랜덤확률 구하기 2018.10.27 4860
130 PHP 문자열에서 검색어를 기준으로 앞뒤로 일정 길이만큼 자르기 2018.10.27 3607
129 디렉토리의 제어 2019.01.08 1304
128 파일 2019.01.08 1555
127 include 와 namespace 2019.01.08 1165
126 배열을 테이블로 만들기 2019.01.08 1961
125 php에서 체크박스 선택한 것 보여주기 file 2019.01.08 1892
124 php/asp에서 가상번호 부여와 가상번호를 거꾸로 적용 2019.01.08 1770
123 디비내용을 엑셀 파일로 다운로드 시키는 방법 2019.01.08 1522
122 사업자번호로 사업자 종류알기 2019.01.08 1292
121 내 계정 용량 체크 2019.01.08 1658
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved