Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengambil Alamat IP Pelanggan dengan Amanah dalam PHP?

Bagaimana untuk Mengambil Alamat IP Pelanggan dengan Amanah dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-06 14:10:161032semak imbas

How to Reliably Retrieve a Client's IP Address in PHP?

Dapatkan semula Alamat IP Pelanggan dalam PHP

superglobal $_SERVER PHP menyediakan kaedah untuk mendapatkan semula alamat IP pelawat tapak web. Walau bagaimanapun, alamat IP yang salah mungkin dikembalikan menggunakan pendekatan $_SERVER['REMOTE_ADDR'] konvensional. Percanggahan ini boleh dikaitkan dengan pelbagai faktor, termasuk pelayan proksi dan pengimbang beban.

Untuk mendapatkan alamat IP yang tepat, pertimbangkan pembolehubah pelayan alternatif. Dua fungsi berikut boleh ditukar ganti dan menunjukkan cara untuk berbuat demikian:

Menggunakan getenv():

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;
}

Menggunakan $_SERVER:

function get_client_ip() {
    $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(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

Fungsi ini mengutamakan pilihan alamat IP yang paling boleh dipercayai yang terdapat dalam pembolehubah pelayan, memastikan perwakilan tepat alamat IP pelanggan.

Atas ialah kandungan terperinci Bagaimana untuk Mengambil Alamat IP Pelanggan dengan Amanah dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn