Dengan alamat IP pengunjung situs Anda, Anda dapat mengetahui cukup banyak tentang dia - negara, kota, nama dan alamat email penyedia Internet, dll. Tetapi nilai utamanya adalah IP dapat berfungsi sebagai ID pengunjung untuk skrip sisi server. Di bawah ini dijelaskan bagaimana Anda dapat menentukan alamat IP menggunakan PHP.
Itu perlu
Pengetahuan dasar tentang PHP
instruksi
Langkah 1
Untuk mengekstrak alamat IP dari header yang dikirim ke server permintaan browser, gunakan fungsi getenv. Ia membaca nilai yang ditentukan untuknya dari variabel lingkungan. Variabel bernama REMOTE_ADDR digunakan untuk menyimpan alamat IP pengunjung. Namun, klien dapat menggunakan server proxy, dalam hal ini variabel akan berisi alamatnya, dan bukan yang Anda inginkan. Anda dapat mengetahui bahwa peselancar web menggunakan IP perantara dengan melihat variabel lingkungan yang disebut HTTP_VIA. Semua alamat server proxy yang terlibat dalam rantai ditempatkan di dalamnya, dipisahkan dengan koma. Server perantara harus menempatkan alamat pengunjung dalam variabel bernama HTTP_X_FORWARDED_FOR, tetapi ini sepenuhnya bergantung pada pengaturan proxy. Ini berarti bahwa untuk mencakup sebanyak mungkin kemungkinan penentuan alamat IP, Anda perlu memeriksa konten setidaknya tiga variabel: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, dan lebih disukai
Langkah 2
Anda dapat menggabungkan pengecekan ketiga variabel menjadi satu baris kode PHP, misalnya seperti ini:
$ ipAddr = getenv ('HTTP_CLIENT_IP') atau $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') atau $ ipAddr = getenv ('REMOTE_ADDR');
Setelah memperoleh nilai alamat IP dengan cara ini, disarankan untuk menghapusnya dari kemungkinan distorsi dan karakter yang tidak perlu. Anda dapat menggunakan ekspresi reguler untuk ini:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$1', $ ipAddr));
Langkah 3
Tetap menggabungkan kedua baris kode menjadi satu fungsi:
fungsi getIP() {
$ ipAddr = getenv ('HTTP_CLIENT_IP') atau $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') atau $ ipAddr = getenv ('REMOTE_ADDR');
kembali trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$1', $ ipAddr));
}