Thứ Tư, 5 tháng 11, 2014

Lấy địa chỉ IP của client bằng PHP

Lấy địa chỉ IP của client bằng PHP


---o0o---


Link bài viết gốc

Cách đơn giản nhất để lấy được địa chỉ IP của người dùng là sử dụng

$_SERVER['REMOTE_ADDR'] hoặc $_SERVER['REMOTE_HOST']

Tuy nhiên đôi khi kết quả mà biến này trả về lại không đúng địa chỉ IP mà ta muốn nên ta có thể sử dụng vài biến sever khác để đạt được yêu cầu

Dưới đây là 2 cách lấy được giá trị IP bằng getenv() và $_SERVER

1. getenv()

getenv() dùng để lấy các giá trị của biến môi trường của apache trong PHP, để hiểu kĩ hơn, bạn có thể xem tại đây

    <?php
    function get_client_ip() {
        $ipaddress = '';
        if (getenv('HTTP_CLIENT_IP'))
            $ipaddress = getenv('HTTP_CLIENT_IP');
        else if(getenv('HTTP_X_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
        else if(getenv('HTTP_X_FORWARDED'))
            $ipaddress = getenv('HTTP_X_FORWARDED');
        else if(getenv('HTTP_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_FORWARDED_FOR');
        else if(getenv('HTTP_FORWARDED'))
            $ipaddress = getenv('HTTP_FORWARDED');
        else if(getenv('REMOTE_ADDR'))
            $ipaddress = getenv('REMOTE_ADDR');
        else
            $ipaddress = 'UNKNOWN';
        return $ipaddress;
    }
    echo 'Kết quả thu được IP là: '. get_client_ip();
    ?>
    

1. $_SERVER

$_SERVER là 1 mảng gồm các biến server mà PHP tự tạo ra, chi tiết xin mời bạn xem ở đây

    <?php
    function get_client_ip_sever() {
        $ipaddress = '';
        if (isset($_SERVER['HTTP_CLIENT_IP']))
            $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
        else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
            $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
        else if(isset($_SERVER['HTTP_X_FORWARDED']))
            $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
        else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
            $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
        else if(isset($_SERVER['HTTP_FORWARDED']))
            $ipaddress = $_SERVER['HTTP_FORWARDED'];
        else if($_SERVER['REMOTE_ADDR'])
            $ipaddress = $_SERVER['REMOTE_ADDR'];
        else
            $ipaddress = 'UNKNOWN';
        return $ipaddress;
    }
    echo 'Kết quả thu được IP là: '. get_client_ip_sever();
    ?>
    

Lấy tất cả thông tin bằng hàm phpinfo()

Không có nhận xét nào:

Đăng nhận xét