Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Menentukan Alamat IP Pelanggan dengan Tepat dalam PHP?

Bagaimanakah Saya Boleh Menentukan Alamat IP Pelanggan dengan Tepat dalam PHP?

Patricia Arquette
Lepaskan: 2024-12-17 05:33:25
asal
737 orang telah melayarinya

How Can I Accurately Determine a Client's IP Address in PHP?

Menentukan Alamat IP Pelanggan dalam PHP

Tatasusunan superglobal PHP $_SERVER menyediakan akses kepada pelbagai maklumat berkaitan pelayan, termasuk alat kawalan jauh pelanggan Alamat IP melalui $_SERVER['REMOTE_ADDR']. Walau bagaimanapun, pendekatan ini mungkin gagal dalam senario tertentu.

Dalam kes di mana nilai $_SERVER['REMOTE_ADDR'] tidak betul, pembolehubah pelayan alternatif boleh digunakan untuk memperoleh alamat IP dengan tepat. Yang berikut meneroka dua pendekatan:

Menggunakan Fungsi getenv():

Fungsi getenv() mendapatkan semula nilai pembolehubah persekitaran. Ia boleh digunakan untuk mendapatkan alamat IP pelanggan seperti berikut:

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;
}
Salin selepas log masuk

Menggunakan $_SERVER Superglobal Array:

Array $_SERVER mengandungi maklumat permintaan HTTP. Kod berikut menunjukkan penggunaannya dalam mendapatkan alamat IP:

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;
}
Salin selepas log masuk

Kedua-dua pendekatan menyediakan kefungsian yang setara tetapi berbeza dalam cara mereka mengakses maklumat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Alamat IP Pelanggan dengan Tepat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan