sun's longitude:245 24 5.35 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
1763 번 글의 답장글: Re: Re: inet_aton() and ini_ntoa() 문의
글쓴이: 고석철 [홈페이지] 글쓴날: 2003년 11월 08일 23:46:41 토(저녁) 조회: 876
친절히 답변해 주셔서 감사합니다. 저는 본시 PHP나 C 언어를
공부한 사람이 아니므로 클래스 같은 소스를 가져다가
가공해서 활용할 만큼의 지식은 없습니다. 현재 제가 갖고 있는
소스는,

CREATE TABLE nuke_stats_country_ip_index (
  ipfrom varchar(30) NOT NULL default '',
  ipto varchar(30) NOT NULL default '',
  id_nation smallint(6) NOT NULL default '0'
) TYPE=MyISAM;

#
# 테이블의 덤프 데이터 `nuke_stats_country_ip_index`
#

INSERT INTO nuke_stats_country_ip_index VALUES ('0033996344', '0033996351', 192);
INSERT INTO nuke_stats_country_ip_index VALUES ('0050331648', '0083886079', 193);

이며 약 45천개의 ip자료가 있습니다만, 한국은 제대로 분리가
되지 않고 있습니다. 그래서, 다음과 같은 산이님의 한국ip를
inet_ntoa() 형식으로 디비에 추가하려고 하는 것이지요. ★
이것을 어떻게 바꾸어야 하는지요?

INSERT INTO nuke_stats_country_ip_index VALUES ('61.248.0.0', '255.248.0.0', 100);
INSERT INTO nuke_stats_country_ip_index VALUES ('129.254.0.0', '255.255.0.0', 100);
INSERT INTO nuke_stats_country_ip_index VALUES ('141.223.0.0', '255.255.0.0', 100);
INSERT INTO nuke_stats_country_ip_index VALUES ('147.6.0.0', '255.255.0.0', 100);
INSERT INTO nuke_stats_country_ip_index VALUES ('147.43.0.0', '255.255.0.0', 100);
INSERT INTO nuke_stats_country_ip_index VALUES ('147.46.0.0', '255.255.0.0', 100);
INSERT INTO nuke_stats_country_ip_index VALUES ('146.47.0.0', '255.255.0.0', 100);

국별 분리 스크립트는 다음과 같습니다.
function GetCountryName($id_nation) {
	global $prefix,$dbi;
	$resultcn = sql_query("select countryname from
".$prefix."_stats_country_index where id_nation='$id_nation'",$dbi);
	list ($countryname) = sql_fetch_row($resultcn,$dbi);
	return $countryname;
}

--------------------------------------------------------

위와는 좀 다른 소스입니다만, 자체의 ip 디비를 가지 않고
호주의 netgeo.caida.org 를 접속하여 정보를 가져오는 방식인데
한국도 apnic인 호주 접속으로 나오는 수가 많습니다.

function wbd_getlatdata($ip) {

  $data = array("");

$fp = fsockopen ("netgeo.caida.org", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs ($fp, "GET /perl/netgeo.cgi?target=$ip HTTP/1.0\r\nHost:
netgeo.caida.org\r\n\r\n");
    while (!feof($fp)) {
        $packet = fgets ($fp,128);
	array_push($data, $packet);
    }
    fclose ($fp);
}

 // make it an array

return $data;

}

===============================================================


[산이]님이 남기신 글:

>
>[고석철]님이 남기신 글:
>
>>안녕하세요.
>>제목과 관련하여 문의하오니 알려 주시면 감사하겠습니다.

>>
>>1. CountryStats 디비자료가 한국을 제외하고 ntoa()형식으로
저장되어 있기에 운영자님의 한국 ip를 ntoa() 형식으로 디비에
올리려는데, aton() 형식을 어떻게 변환할 수 있을까요?
>
>aton(); // `address to number' 맞나요?
>
>ipv4 => '192.168.0.1'; // string
>
>이라면, 이것은
>
>ipv4 => 192 *(255*255*255) + 168 * (255*255) + 0 * (255) + 1; //unsigned
long
>
>이 됩니다.
>
>디비에 저장된 자료가 어떤 형태인지 샘플로 좀 알 수
있을까요?
>
>
>http://ftp.ind.net/pub/mirrors/ftp.redhat.com/redhat/linux/6.2/de/do
c/HOWTOS/translations/ko/translations/socketbeej
>
>에 관련 C 예제가 있네요. 제가 C 언처 깡통이라서...
T.T
>요즘은 FreeBSD 공부중이라서 다른 분야에 신경을 많이
못씁니다..T.T
>
>PHP 에서는
>
>(string) ipv4 <--> (long) ipv4
>
>[string --> long 일 경우]
>
>$ipv4 = sprintf('%u',ip2long((string)$ipv4));
>
>[long --> string 일 경우]
>
>$ipv4 = long2ip((integer)$ipv4);
>
>본 php 클래스에서는 getnetwork() 맴버함(메소드)에
 있습니다.
>AND 연산을 위해서 '%u' 대신 '%b' binaray 형태로 바꾸어서
연산했을 뿐입니다.
>
>
>>
>>2. 운영자님이 작성하신 ipv4.php, korea_ip_address.txt는
 php 웹서버에서 어떻게 사용할 수 있는지요?
>>
>
>접속한 클라이언트 IP 주소가 한국 IP 주소인지
아닌지를
>판별하는데 사용됩니다.
>즉 클라이언트 IP 주소하고 global subnet 를 하나씩 ADN 연산하여
그
>결과가 한국의 global network 주소에 있다면 한국 IP
주소로
>간주하는 아주 간단한 계산입니다.
>
>계산을 간단하게(speed up)하기 위해서 global subnet 으로 미리
계산해
>놓은것입니다.

>
>
>PHP class 소스 :
>
>http://linuxchannel.net/?vhost=phps&php[src]=%2Ffunc%2Fclass.ipv4.ph

>
>## [example]
>##
>##  echo ipv4::iskrip('192.168.10.3'); // 2
>##  echo ipv4::iskrip(gethostbyname('www.linuxchannel.net')); // 1
>##  echo ipv4::iskrip($_SERVER['REMOTE_ADDR']); // FALSE or 1 or 2
>##
>##  echo ipv4::network('192.168.10.3'); // 192.168.0.0/255.255.0.0
>##  echo ipv4::network('192.100.10.3'); // 192.0.0.0/255.0.0.0
>##  echo ipv4::network($_SERVER['REMOTE_ADDR']); // FALSE or some
string
>##
>
>본 홈페이지 초기화면 상단 중앙쯤에
>
>your global ip-network
>61.248.0.0/255.248.0.0(61.254.75.40) 
>
>이런 메시지가 나올겁니다.
>
>61.248.0.0/255.248.0.0 이것은 한국에서 사용하는
>global network / global subnet 입니다.
>() 안은 클라이언트 IP 주소이고요.
>
>만약 한국이 아닌 다른 외국 IP 호스트에서 본 홈페이지를
접속한다면
>이런 메시지는 볼 수 없습니다.
>
>
>>감사합니다. 
>
>혹시 제가 질문 취지를 잘못알고 남의 다리를 긁은것
같은
>느낌이 드네요.......... ^.^ 

========================================

 
이전글 : Re: inet_aton() and ini_ntoa() 문의
다음글 : Re: Re: Re: inet_aton() and ini_ntoa() 문의  
 from 211.225.164.129
JS(Redhands)Board 0.4 +@

Re: inet_aton() and ini_ntoa() 문의 Re: Re: Re: inet_aton() and ini_ntoa() 문의
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds