가능한 가장 컴팩트 한 방법으로 IP 주소를 저장해야하므로 검색이 중요하지 않습니다. 이것은 또한 모든 DB (MySQL, SQLite, Postgres 등)를 사용하여 Windows, Linux 및 Mac에서 호환 가능해야합니다.IP 주소 (v4 또는 v6)를 PHP를 사용하여 데이터베이스에 int로 저장하는 방법은 무엇입니까?
PHP의 ip2long() 및 long2ip() 함수 덕분에 IPX 주소를 varchar (15) 등이 아닌 작은 int 필드로 변환 할 수 있습니다. 문제는 우리가 IP6로 전환하는 단계에 있다는 것입니다. IP6에서 작동하지 않는 기능을 포함하여 대부분의 기존 모범 사례가 실패하고 있음을 의미합니다. 또한 INET_ATON() 및 INET_NTOA()와 같은 DB 특정 함수는 여기에 옵션이 없습니다.
그렇다면 시스템에서 작동하는 방식으로 IP 주소를 INT (또는 다른 모든 소형 형식)로 어떻게 저장합니까?
편집: Wrang-wrang는 지적 The thread 팩 및 IP4 또는 IP6 중 하나를 풀고 inet_ntop()와 inet_ptop()의 사용을 언급하고있다. 문제는 PHP/5.1에서 Linux/Mac에서만 작동하며 (문제가 아닌) +5.3의 Windows에서 작동한다는 것입니다.
각 데이터베이스에서 권장 한 varbinary (16) 필드의 대체 항목이 문제가 아닌 경우?
[이 SO 스레드] (http://stackoverflow.com/questions/420680/how-to-store-ipv6-compatible-address-in-a-relational-database)를보고 싶을 수도 있습니다. 포스터는 IPv6 주소를 저장하기 위해 두 개의'BIGINT' 필드를 사용하여 정착되었지만 고려해야 할 다른 제안이 있습니다. – zombat