Cdr with php

1,539 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,539
On SlideShare
0
From Embeds
0
Number of Embeds
955
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Cdr with php

  1. 1. 서울시 마포구 상암동 누리꿈스퀘어 연구개발타워 1111호 _ 070.7450.6572 _ dev@jellycoaster.comCrossDomainRequestwith PHP (Proxy)Jellycoaster Inc.Dev.team
  2. 2. 목차I. CrossDomain Request 란?II. PHP SocketIII. Further Study서울시 마포구 상암동 누리꿈스퀘어 연구개발타워 1111호 _ 070.7450.6572 _ dev@jellycoaster.com
  3. 3. IJellycoaster Inc. Dev.team1- 위 그림과 같이 특정 도메인에서 다른 도메인으로 GET, POST 등의방식으로 데이터를 보낸 후 처리 결과를 요청하는 것- 대부분의 브라우저(클라이언트 측)에서는 보안상의 이유로 인해원칙적으로 다른 도메인으로 Request를 할 수 없음!
  4. 4. IJellycoaster Inc. Dev.team1- 클라이언트단(Javascript 등)이 아닌 서버단(PHP)에서 처리 후클라이언트 측으로 값을 넘겨주는 방식을 취하면 CDR 가능!- 서버 측에서 CDR을 처리하는 페이지를 Proxy Page 라고 함- PHP에서 Proxy Page를 만들기 위해 fsockopen 함수를 이용,소켓 통신을 해야 함!
  5. 5. IJellycoaster Inc. Dev.team1function post_request($url, $data) {// $data배열 값을 url 변수로 바꿈 (ex: a=b&foo=bar)$data = http_build_query($data);// URL 파싱$url = parse_url($url);if ($url[scheme] != http) {return "Error:Only HTTP request are supported!";}// extract host and path:$host = $url[host];$path = $url[path];$res = ;// 타임아웃 300초로 Socket 오픈if ($fp = fsockopen($host, 80, $errno, $errstr, 300)) {$reqBody = $data;$reqHeader = "POST $path HTTP/1.1rn" . "Host: $hostrn";$reqHeader .= "Content-type: application/x-www-form-urlencodedrn". "Content-length: " . strlen($reqBody) . "rn". "Connection: closernrn”;
  6. 6. IJellycoaster Inc. Dev.team1/* 요청 전송 */fwrite($fp, $reqHeader);fwrite($fp, $reqBody);while(!feof($fp)) {$res .= fgets($fp, 1024);}fclose($fp);} else {return "Error:Cannot Connect!";}// 응답을 헤더와 컨텐트로 분리$result = explode("rnrn", $res, 2);$header = isset($result[0]) ? $result[0] : ;$content = isset($result[1]) ? $result[1] : ;return $content;}
  7. 7. IJellycoaster Inc. Dev.team1$res = $this->post_request($url, $data); // HTTP 소켓연결 후 POST 데이터 전송$data_json = json_decode($res); // Json 데이터 수신if($data_json->code == ‘00) // 코드값 00이면 TRUE, 아닐 경우 FALSEreturn TRUE;elsereturn FALSE;
  8. 8. IJellycoaster Inc. Dev.team1PHP Socket을 이용하여 할 수 있는 것들- 웹페이지 Parsing- 간이 채팅방 만들기- 실시간 정보 이용 서비스- ……..PHP 소켓을 좀 더 쉽게, 다양하게 사용하려면?- Snoopy.class 라는 PHP용 소켓 클래스를 사용해보자!- 마지막 버전 소스 : http://snoopy.sourceforge.net/
  9. 9. 서울시 마포구 상암동 누리꿈스퀘어 연구개발타워 1111호 _ 070.7450.6572 _ dev@jellycoaster.com감사합니다!Jellycoaster Inc.Dev.team

×