Php - Code lấy địa chỉ ip của người dùng

Thảo luận trong 'Website' bắt đầu bởi Admin, 15 Tháng hai 2017.

  1. Admin Nothing to lose.. your love to win..

    Bài viết:
    4,093
    Lấy địa chỉ client IP trong PHP, lấy IP máy tính PHP

    Bình thường, muốn lấy địa chỉ IP của khách truy cập trang web các bạn chỉ cần sử dụng 1 dòng code:

    PHP:
    $ip $_SERVER["REMOTE_ADDR"];

    hoặc

    $ip 
    $_SERVER['REMOTE_HOST'];
    Tuy nhiên trong một số trường hợp kết quả có thể không chính xác, các bạn có thể sử dụng code bên dưới.

    Đoạn PHP sau sẽ trả về đúng địa chỉ IP của người đang gửi request tới server

    PHP:
    function getRemoteIPAddress(){
        
    $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR']: '';
        return 
    $ip;
    }

    /* If your visitor comes from proxy server you have use another function
    to get a real IP address: */

    function getRealIPAddress(){
        if(!empty(
    $_SERVER['HTTP_CLIENT_IP'])){
            
    //check ip from share internet
            
    $ip $_SERVER['HTTP_CLIENT_IP'];
        }else if(!empty(
    $_SERVER['HTTP_X_FORWARDED_FOR'])){
            
    //to check ip is pass from proxy
            
    $ip $_SERVER['HTTP_X_FORWARDED_FOR'];
        }else{
            
    $ip $_SERVER['REMOTE_ADDR'];
        }
        return 
    $ip;
    }
    Hoặc

    PHP:
    function getClientIP() {
        return isset(
    $_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP']:
            isset(
    $_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR']:
            isset(
    $_SERVER['HTTP_X_FORWARDED']) ? $_SERVER['HTTP_X_FORWARDED']:
            isset(
    $_SERVER['HTTP_FORWARDED_FOR']) ? $_SERVER['HTTP_FORWARDED_FOR']:
            isset(
    $_SERVER['HTTP_FORWARDED']) ? $_SERVER['HTTP_FORWARDED']:
            isset(
    $_SERVER['REMOTE_ADDR']) ? '$_SERVER['REMOTE_ADDR']: 'Unknown IP';
    }
    Hoặc bạn có thể sử dụng hàm getenv() trong PHP 5.3 và các phiên bản về sau:

    PHP:
    function getClientIP() {
        return 
    getenv('HTTP_CLIENT_IP') ? :
            
    getenv('HTTP_X_FORWARDED_FOR') ? :
            
    getenv('HTTP_X_FORWARDED') ? :
            
    getenv('HTTP_FORWARDED_FOR') ? :
            
    getenv('HTTP_FORWARDED') ? :
            
    getenv('REMOTE_ADDR') ? : 'Unknown IP';
    }
    VPS tốt nhất dành cho webmaster: Vultr hoặc DigitalOcean
     
    Chỉnh sửa cuối: 23 Tháng mười hai 2019
  2. Admin Nothing to lose.. your love to win..

    Bài viết:
    4,093
    Một hàm khác cho các bạn tham khảo - sưu tập trên mạng, mình chưa test:

    Lấy IP thật

    PHP:
    function getrealip()
    {
    if (isset(
    $_SERVER)){
    if(isset(
    $_SERVER["HTTP_X_FORWARDED_FOR"])){
    $ip $_SERVER["HTTP_X_FORWARDED_FOR"];
    if(
    strpos($ip,",")){
    $exp_ip explode(",",$ip);
    $ip $exp_ip[0];
    }
    }else if(isset(
    $_SERVER["HTTP_CLIENT_IP"])){
    $ip $_SERVER["HTTP_CLIENT_IP"];
    }else{
    $ip $_SERVER["REMOTE_ADDR"];
    }
    }else{
    if(
    getenv('HTTP_X_FORWARDED_FOR')){
    $ip getenv('HTTP_X_FORWARDED_FOR');
    if(
    strpos($ip,",")){
    $exp_ip=explode(",",$ip);
    $ip $exp_ip[0];
    }
    }else if(
    getenv('HTTP_CLIENT_IP')){
    $ip getenv('HTTP_CLIENT_IP');
    }else {
    $ip getenv('REMOTE_ADDR');
    }
    }
    return 
    $ip;
    }


    $MyipAddress getrealip();
    echo 
    $MyipAddress// IP:  58.97.178.57
     
    Chỉnh sửa cuối: 23 Tháng mười hai 2019
Trả lời qua Facebook
Đang tải...