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