Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mendapatkan Alamat IP Pelanggan Dengan Tepat di Laravel?

Bagaimana Mendapatkan Alamat IP Pelanggan Dengan Tepat di Laravel?

Susan Sarandon
Susan Sarandonasal
2024-10-20 08:32:31729semak imbas

How to Get Client IP Address Accurately in Laravel?

Mendapatkan Alamat IP Pelanggan dalam Laravel 5

Mendapatkan alamat IP pelanggan dalam Laravel mungkin kelihatan mudah menggunakan $_SERVER["REMOTE_ADDR"]. Walau bagaimanapun, tidak seperti PHP teras, Laravel mengembalikan IP pelayan dan bukannya IP pelawat.

Untuk menangani isu ini, Laravel menggunakan Request::ip(). Kaedah ini menggunakan Objek Permintaan Symfony untuk menentukan alamat IP pelanggan.

Secara dalaman, Request::ip() memanggil getClientIps(), yang menggunakan pendekatan yang mantap untuk mengekstrak alamat IP pelanggan. Ia mula-mula mengambil alamat IP pelayan (REMOTE_ADDR) dan menyemak sama ada proksi yang dipercayai digunakan.

Jika proksi yang dipercayai dikesan, pengepala permintaan akan diperiksa berdasarkan konfigurasi pengepala dipercayai Laravel. Pengepala khusus, seperti X-Forwarded-For dan X-Client-IP, dihuraikan untuk mengekstrak alamat IP klien.

Walau bagaimanapun, pengepala ini mungkin tidak boleh dipercayai, terutamanya jika klien berada di belakang berbilang proksi. Oleh itu, alamat IP permintaan ditambahkan sebagai elemen terakhir dalam tatasusunan $clientIps.

Alamat IP pelanggan kemudiannya dipilih sebagai elemen pertama dalam $clientIps. Alamat IP ini mungkin IP permintaan atau salah satu proksi yang dipercayai.

Untuk memastikan ketepatan, setiap alamat IP dalam $clientIps disahkan terhadap senarai proksi yang dipercayai. Jika alamat IP milik proksi yang dipercayai, ia dialih keluar daripada tatasusunan.

Akhirnya, Request::ip() mengembalikan tatasusunan alamat IP. Elemen pertama tatasusunan ini mewakili alamat IP klien yang tidak dipercayai, diikuti dengan IP mana-mana proksi yang dipercayai.

Atas ialah kandungan terperinci Bagaimana Mendapatkan Alamat IP Pelanggan Dengan Tepat di Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn