기존 흔히 알고 있는 ipv4 주소 체계가 고갈되는 문제로 인해
기존 32비트였던 ip주소 체계에서 -> 128비트의 무제한에 가까운 주소체계가 할당되고 있는데
이것이 ipv6 주소.
ipv6주소는 16진수로 0000: 형태로 총 8개의 구조로 연결되고
앞부분 4개는 네트워크 주소, 뒷부분 4개는 인터페이스 주소라고 한다.
대충 쉽게 말해 12년도쯤 한국에 할당된 ipv4가 112,231,936개라 하는데
인터넷에 접속되는 컴퓨터의 증가로 주소가 모자르기 때문에 더 많은 주소 체계인 ipv6주소를 할당하고 있다는 이야기
(실제 ipv6주소는 할당 가능한 수치가 340,282,366,920,938,463,463,374,607,431,768,211,456개라고 한다 +_+;)
작업중 특정 대상에 따른 ip주소를 수집하고 있었는데
ipv6주소 역시 수집함과 동시에 ipv4주소와 ipv6주소의 분리 및 확인이 필요하여
간단하게 사용할 함수를 기록해 둔다.
<?php
function chk_real_ip(){
if(!empty($_SERVER['HTTP_CLIENT_IP']) && getenv('HTTP_CLIENT_IP')){
return $_SERVER['HTTP_CLIENT_IP'];
}
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && getenv('HTTP_X_FORWARDED_FOR')){
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif(!empty($_SERVER['REMOTE_HOST']) && getenv('REMOTE_HOST')){
return $_SERVER['REMOTE_HOST'];
}
elseif(!empty($_SERVER['REMOTE_ADDR']) && getenv('REMOTE_ADDR')){
return $_SERVER['REMOTE_ADDR'];
}
return false;
}
function chk_ipv6() {
$ip = chk_real_ip();
if(!preg_match("/^([0-9a-f\.\/:]+)$/",strtolower($ip))) {
return false;
}
if(substr_count($ip,":") < 2) {
return false;
}
$part = preg_split("/[:\/]/", $ip);
foreach($part as $i) {
if(strlen($i) > 4) {
return false;
}
}
return true;
}
if(chk_ipv6() === true){
echo "접속하신 주소는 ipv6주소";
} else {
echo "접속하신 주소는 ipv4주소";
}
?>
ps. 오랫만에 티스토리를 다시 시작하려고 하는데
스킨이 많이 없어졌네..ㅠ_ㅠ
'WEB > PHP' 카테고리의 다른 글
PHP 크롤링 일반페이지와 XML파싱할때 (1) | 2022.07.04 |
---|---|
워드프레스 별도 mysqli_query 등 sql 작업을 필요로 할때 (0) | 2022.06.30 |
RSS 크롤링시 닫힘태그가 아닌 태그의 요소 파싱하기 (0) | 2021.08.31 |
[PHP] 문자열 자르기 한글깨짐 substr 말고 iconv_substr (3) | 2016.11.09 |
[PHP] fopen을 사용한 txt파일로 로그남기기 (0) | 2014.02.11 |