PHP/Python/Ruby

사용자 ip가 ipv4 인지, ipv6 인지 체크하는 함수

페이지 정보

profile_image
작성자 최고관리자 작성일 13-10-25 10:39 조회 3,109 댓글 0

본문

<?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 입니다.";
 }
 ?>

댓글목록

등록된 댓글이 없습니다.

게시물 검색
전체 3건 1 페이지

회원로그인

Copyright © 2001-2016 ITNANUM. All Rights Reserved..