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
Lepaskan: 2024-12-06 14:10:16
asal
997 orang telah melayarinya

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

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

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!

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