>  기사  >  백엔드 개발  >  mysql을 통해 IP 주소 데이터를 처리하기 위해 inet_aton 및 inet_ntoa를 사용하는 방법

mysql을 통해 IP 주소 데이터를 처리하기 위해 inet_aton 및 inet_ntoa를 사용하는 방법

jacklove
jacklove원래의
2018-06-09 10:14:131389검색

이 글에서는 IP 주소 데이터를 데이터베이스에 저장하기 위해 적절한 형식을 사용하는 방법과 IP 주소를 쉽게 비교하는 방법을 소개합니다.

1. IP 주소를 데이터베이스에 저장합니다.

IP 주소를 데이터베이스에 저장합니다. 필드는 일반적으로 다음과 같이 정의됩니다. IP 주소의 최대 길이는 255.255.255.255입니다. 15이면 15비트 문자를 사용하면 충분합니다.

테이블 사용자 만들기

`ip` char(15) NOT NULL,

여러 데이터 조각 삽입

CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, `ip` char(15) NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB;

2.mysql inet_aton 및 inet_ntoa 메서드

mysql은 IP 주소를 처리하는 두 가지 메서드를 제공합니다

inet_aton

IP 변환 부호 없는 정수(4-8비트)로

inet_ntoa 정수 IP를 전자 주소로 변환
데이터를 삽입하기 전에 먼저
inet_aton

을 사용하여 IP 주소를 정수로 변환하면 char(15)가 차지하므로 공간을 절약할 수 있습니다. 16바이트.

데이터를 표시할 때 inet_ntoa를 사용하여 정수 IP 주소를 전기 주소로 변환하여 표시하세요.
예:

INSERT INTO `user` (`id`, `name`, `ip`) VALUES(2, 'Abby', '192.168.1.1'),
(3, 'Daisy', '172.16.11.66'),
(4, 'Christine', '220.117.131.12');
여러 데이터 조각 삽입

CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `ip` int(10) unsigned NOT NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB;
INSERT INTO `user` (`id`, `name`, `ip`) VALUES(2, 'Abby', inet_aton('192.168.1.1')),
(3, 'Daisy', inet_aton('172.16.11.66')),
(4, 'Christine', inet_aton('220.117.131.12'));
쿼리는 이메일 주소를 보여줍니다

mysql> select * from `user`;
+----+-----------+------------+| id | name      | ip         |
+----+-----------+------------+|  2 | Abby      | 3232235777 |
|  3 | Daisy     | 2886732610 ||  4 | Christine | 3698688780 |
+----+-----------+------------+
3. method

필요하다면 네트워크 세그먼트(예: 172.16.11.1 ~ 172.16.11.100)의 사용자가 PHP의 ip2long

메서드를 사용하여 IP 주소를 정수로 변환한 다음 비교할 수 있는 위치를 알아보세요.

mysql> select id,name,inet_ntoa(ip) as ip from `user`;
+----+-----------+----------------+| id | name      | ip             |
+----+-----------+----------------+|  2 | Abby      | 192.168.1.1    |
|  3 | Daisy     | 172.16.11.66   ||  4 | Christine | 220.117.131.12 |
+----+-----------+----------------+
Query:

6f0ae2a3f34ecd991e57660263d12ee5
참고: ip2long 메소드를 사용하여 IP 주소를 정수로 변환하면 큰 IP의 경우 음수가 표시됩니다. 이유 및 처리 방법은 내 다른 것을 참조하십시오. 기사: "php ip2long에서 음수가 발생하는 이유와 해결책》

4. 요약

1. unsigned int 형식을 사용하여 IP 주소를 데이터베이스에 저장합니다. 삽입할 때 inet_aton 메서드를 사용하여 IP를 변환합니다. 부호 없는 정수로 먼저 변환하면 저장 공간이 절약됩니다. 2. 표시할 때 정수 IP 주소를 전기 주소로 변환하려면 inet_ntoa를 사용하세요.

3.ip2long을 정수로 변환할 때 음수에 주의해야 합니다.


이 글에서는 mysql을 통해 IP 주소 데이터를 처리하기 위해 inet_aton과 inet_ntoa를 사용하는 방법에 대해 설명합니다.
관련 권장 사항:

gzip 압축 출력 관련 콘텐츠를 사용하는 php json 데이터

http_build_query,parse_url,parse_str을 사용하여 php를 통해 URL을 생성하고 구문 분석하는 방법

html5 기능을 통해 shake를 구현하는 방법

위 내용은 mysql을 통해 IP 주소 데이터를 처리하기 위해 inet_aton 및 inet_ntoa를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.