Dengan alamat IP pelawat ke laman web anda, anda dapat mengetahui banyak tentangnya - negara, bandar, nama dan alamat e-mel penyedia Internet, dll. Tetapi nilai utamanya adalah bahawa IP dapat berfungsi sebagai ID pelawat untuk skrip sisi pelayan. Di bawah ini dijelaskan bagaimana anda dapat menentukan alamat IP menggunakan PHP.
Ia perlu
Pengetahuan asas PHP
Arahan
Langkah 1
Untuk mengekstrak alamat IP dari tajuk yang dihantar ke pelayan permintaan penyemak imbas, gunakan fungsi getenv. Ia membaca nilai-nilai yang ditentukan kepadanya dari pemboleh ubah persekitaran. Pemboleh ubah bernama REMOTE_ADDR digunakan untuk menyimpan alamat IP pelawat. Walau bagaimanapun, pelanggan boleh menggunakan pelayan proksi, di mana pemboleh ubah akan mengandungi alamatnya, dan bukan yang anda mahukan. Anda dapat mengetahui bahawa surfer web menggunakan IP perantaraan dengan melihat pemboleh ubah persekitaran yang disebut HTTP_VIA. Semua alamat pelayan proksi yang terlibat dalam rantai diletakkan di dalamnya, dipisahkan dengan koma. Pelayan perantaraan mesti meletakkan alamat pelawat dalam pemboleh ubah bernama HTTP_X_FORWARDED_FOR, tetapi ini bergantung sepenuhnya pada tetapan proksi. Ini bermaksud bahawa untuk merangkumi seberapa banyak kemungkinan menentukan alamat IP, anda perlu memeriksa kandungan sekurang-kurangnya tiga pemboleh ubah: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, dan lebih baik
Langkah 2
Anda boleh menggabungkan memeriksa ketiga-tiga pemboleh ubah menjadi satu baris kod 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 membersihkannya dari kemungkinan penyimpangan dan watak yang tidak perlu. Anda boleh menggunakan ungkapan biasa untuk ini:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Langkah 3
Masih menggabungkan kedua-dua baris kod 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));
}