소켓통신 작업 샘플소스

Posted by 비회원 프로그래밍/PHP : 2011.03.18 11:32


단순 post로 값을 보내는 경우 보안에 좋지 않으므로

받아오는 페이지에서 리퍼러값 등의 체크가 필요하다.

<?
#########################################################################
# 개발자  : 전동규            #
# 메일주소 : jawebdev@gmail.com         #
# 작업일  : 2011-03-08           #
# 작업내용 : 소켓통신 작업          #
#########################################################################
$go_url = "http://test.com/go_url.php";
// 전송요청 URL 바꾸지마세요.

// 이전페이지에서 값 받아온것들 목록

$go_arr['id'] = $user_id;
$go_arr['ip'] =$_SERVER[REMOTE_ADDR];
// 소켓통신용 배열로 변환

$host_info = explode("/", $go_url);
$host = $host_info[2];
$path = $host_info[3]."/".$host_info[4]."/".$host_info[5];
// 호스트,경로 맞춰 변환

srand((double)microtime()*1000000);
$boundary = "---------------------".substr(md5(rand(0,32000)),0,10);
//print_r($go_arr);
// 바운더리 코드 생성

$header = "POST /".$path ." HTTP/1.0\r\n";
$header .= "Host: ".$host."\r\n";
$header .= "Content-type: multipart/form-data, boundary=".$boundary."\r\n";
// 헤더 생성

foreach($go_arr AS $index => $value){
 $data .="--$boundary\r\n";
 $data .= "Content-Disposition: form-data; name=\"".$index."\"\r\n";
 $data .= "\r\n".$value."\r\n";
 $data .="--$boundary\r\n";
}
$header .= "Content-length: " . strlen($data) . "\r\n\r\n";
// 본문 생성

$fp = fsockopen($host, 80);
// 소켓통신 시작
if ($fp) {
 $sock_return_value = "Connection Success <br>";
 fputs($fp, $header.$data);
 $rsp = '';
 while(!feof($fp)) {
  $rsp .= fgets($fp,8192);
 }
 fclose($fp);
 $msg = trim($rsp);
}else {
 $sock_return_value = "Connection Failed <br>";
}

echo $sock_return_value ;
echo "<xmp>".$msg."</xmp>";
?>

신고

댓글을 달아 주세요

 «이전 1 ··· 69 70 71 72 73 74 75 76 77 ··· 218  다음»

티스토리 툴바