메뉴 건너뛰기

프로그램언어

조회 수 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
번호 제목 날짜 조회 수
220 다중 파일을 zip으로 묶어받기 2020.06.19 616
219 다중 도메인에 따른 접속방법 2017.03.06 19370
218 네이버 지도 API를 이용한 주소를 좌표로 변환하기 (PHP) 2020.09.22 493
217 네이버 지도 API 연동 PHP 소스 2017.03.06 18635
216 네이버 지도 api php버전 2014.03.26 19434
215 네이버 자동 띄어쓰기를 이용하기 2017.03.27 17940
214 내 계정 용량 체크 2019.01.08 1595
213 날짜함수 사용하여 한달에 주차 구하기 weeks by month 2021.07.08 695
212 날짜계산 몇일까지.. [ ex)4 일전 new 표시 ] 2018.07.24 4523
211 날짜/시간함수 정리 2018.08.29 2429
210 날짜, 시간 포맷하기 (PHP) 2018.07.04 5230
209 날짜 일수 차이 계산 2017.03.07 19977
208 날짜 계산하기 (하루전 날짜 구하기) 2014.02.27 21627
207 깨진 한글 체크 2016.12.23 20223
206 기본적인 페이징 2017.03.07 24849
205 금액 단위를 만단위부터 표시하는방법 2019.01.16 1900
204 글내용 이미지 리사이징 2014.02.27 29446
203 그누보드, 여분필드 사용팁 2017.03.06 17606
202 그누보드 https 보안서버 연결시 오류 2023.01.12 280
201 구글 학술 검색 2021.03.26 255
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved