Paling sering, alamat IP pengunjung situs digunakan untuk mengidentifikasinya. Tapi selain itu, dengan menggunakan IP, Anda bisa mendapatkan banyak informasi tambahan tentang pengunjung - misalnya, mengetahui penyedia Internet dan lokasi geografisnya. Dalam praktiknya, skrip PHP sisi server paling sering digunakan untuk mengekstrak alamat IP dari header permintaan yang dikirim oleh browser.
Itu perlu
Pengetahuan dasar tentang PHP
instruksi
Langkah 1
Gunakan fungsi getenv bawaan PHP untuk membaca alamat IP dari larik variabel lingkungan superglobal. Dalam kasus paling sederhana, cukup untuk membaca variabel bernama REMOTE_ADDR. Bagian kode PHP yang sesuai mungkin terlihat seperti ini: $ userIP = getenv ('REMOTE_ADDR');
Langkah 2
Selain variabel REMOTE_ADDR yang dikirim dalam permintaan, periksa variabel HTTP_VIA dan HTTP_X_FORWARDED_FOR. Jika pengunjung menggunakan server proxy, maka alamat perantara harus dicatat di kedua variabel - di HTTP_VIA dan REMOTE_ADDR. Dalam hal ini, Anda dapat mencoba mengetahui IP asli pengunjung melalui HTTP_X_FORWARDED_FOR - server proxy harus memasukkan alamat asli ke dalamnya. Namun, ini tidak selalu dilakukan, dan pengguna memiliki kesempatan untuk memilih server proxy "buram" yang tidak mengirimkan IP asli dari pengunjung yang mengirim permintaan. Bagaimanapun, Anda harus menggunakan sebanyak mungkin cara untuk mendapatkan alamat IP asli dalam kode Anda dengan menambahkan tanda centang untuk variabel
Langkah 3
Gabungkan dalam satu baris kode PHP pemeriksaan berurutan dari tiga variabel lingkungan, yang mungkin berisi alamat IP asli pengunjung. Ini dapat dilakukan, misalnya, seperti ini: $ userIP = getenv ('HTTP_CLIENT_IP') OR $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OR $ userIP = getenv ('REMOTE_ADDR');
Langkah 4
Hapus karakter tambahan dan "sampah" lainnya dari nilai IP yang dihasilkan yang mungkin masuk ke variabel lingkungan. Ini dapat dilakukan, misalnya, menggunakan fungsi PHP bawaan TRIM dan preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$1', $ IP pengguna));
Langkah 5
Gabungkan semua kode menjadi fungsi khusus sehingga Anda dapat merujuknya alih-alih mengulangi baris pemeriksaan dan pembersihan berulang-ulang di berbagai bagian skrip PHP Anda. Misalnya seperti ini: FUNCTION getUserIP() {
$ userIP = getenv ('HTTP_CLIENT_IP') OR $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OR $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$1', $ userIP));
}