사용자 ip가 ipv4 인지, ipv6 인지 체크하는 함수
페이지 정보
본문
<?php
function getRealIpAddr(){
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;
}
// ipv6 체크 함수
function is_ipv6() {
$ip = getRealIpAddr();
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(is_ipv6() === true){
echo "ipv6 입니다.";
} else {
echo "ipv4 입니다.";
}
?>
function getRealIpAddr(){
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;
}
// ipv6 체크 함수
function is_ipv6() {
$ip = getRealIpAddr();
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(is_ipv6() === true){
echo "ipv6 입니다.";
} else {
echo "ipv4 입니다.";
}
?>
댓글목록
등록된 댓글이 없습니다.