Apabila mendapatkan semula alamat IP pengguna menggunakan PHP, terdapat berbilang pembolehubah pelayan tersedia untuk dipertimbangkan. Walaupun tiada kaedah yang kalis, artikel ini meneroka pendekatan paling tepat berdasarkan pembolehubah ini.
Latar Belakang
Susun atur $_SERVER mengandungi banyak pengepala yang berpotensi memberikan maklumat alamat IP . Walau bagaimanapun, kebolehpercayaan dan ketepatan pengepala ini boleh berbeza-beza bergantung pada konfigurasi proksi dan topologi rangkaian.
Kaedah yang Biasa Digunakan
Secara tradisinya, urutan berikut telah digunakan untuk mendapatkan alamat IP pengguna:
Untuk meningkatkan ketepatan dan prestasi, urutan ini telah dioptimumkan seperti berikut:
function get_ip_address() { $headers = ['HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR']; foreach ($headers as $header) { if (isset($_SERVER[$header]) && ($ip = trim($_SERVER[$header]))) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { return $ip; } } } return null; }
Semasa pendekatan ini akan mendapatkan semula alamat IP pengguna di belakang kebanyakan proksi, adalah penting untuk ambil perhatian:
REMOTE_ADDR kekal sebagai sumber maklumat alamat IP yang paling boleh dipercayai untuk kebanyakan tujuan.Fungsi validate_ip() telah dioptimumkan untuk menggunakan fungsi PHP filter_var().
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Alamat IP Pengguna Paling Tepat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!