Saya perlu mendapatkan IP lokal komputer seperti 192. * .... Apakah ini mungkin dengan PHP?
Saya perlu alamat IP sistem menjalankan skrip, tetapi saya tidak memerlukan IP eksternal, saya memerlukan alamat kartu jaringan lokalnya.
php
ip-address
udara
sumber
sumber
sumber
getHostName
tidak mengembalikan nama domain situs.Ini adalah posting lama, tapi dapatkan dengan ini:
Sebagai contoh:
Ditemukan di situs lain, jangan hapus perintah trim karena jika tidak Anda akan mendapatkan nama komputer.
BACKTICKS (Tanda kutip khusus): Ini berfungsi karena PHP akan mencoba menjalankan apa pun di antara "tanda kutip khusus" (tanda kutip) itu sebagai perintah shell dan mengembalikan keluaran yang dihasilkan.
Sangat mirip (tetapi jauh lebih efisien) daripada melakukan:
sumber
gethostbyname
mengembalikan IP loopback (misalnya 127.0.0.1) untuk mesin host.coba ini (jika server Anda adalah Linux):
sumber
eth0
apakah antarmuka yang sesuai.wlan0
bukannyaeth0
dan mengganti'inet addr:'
dengan'inet adr:'
, mungkin karena lokal yang digunakan pada sistem saya (fr_FR). Selain itu, jawaban ini adalah solusi yang saya cari. Terima kasih!'inet adr:'
bekerja di terminal saya (lokal perancis), tetapi dalam skrip PHP'inet addr:'
adalah nilai yang benar (lokal bahasa Inggris, saya kira).Alamat IP eksternal default dari mesin lokal dapat diperoleh seperti ini:
Bagaimana itu bekerja:
Karena ini UDP,
socket_connect
tidak keluar di jaringan. Ini hanya memberikan alamat lokal dan port ke soket. Ini memungkinkan kami untuk mendapatkan alamat lokal.Solusi ini bekerja tanpa lalu lintas jaringan, DNS, atau eksekusi perintah.
Ini mungkin tidak berfungsi jika tidak ada rute ke
8.8.8.8
(mis. Anda tidak memiliki koneksi internet).sumber
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($sock, $this->getDockerMachineIp(), 53);
sockets
modul harus diinstal dan diaktifkan di PHP.Tergantung apa yang Anda maksud dengan lokal:
Jika yang Anda maksud dengan lokal adalah alamat server / sistem yang menjalankan kode PHP, maka masih ada dua cara untuk didiskusikan. Jika PHP dijalankan melalui server web, Anda bisa mendapatkan alamat server dengan membaca
$_SERVER['SERVER_ADDR']
. Jika PHP dijalankan melalui antarmuka baris perintah, maka Anda mungkin harus menjalankan shellipconfig
(Windows) /ifconfig
(* nix) dan menghapus alamatnya.Jika yang Anda maksud dengan lokal adalah alamat jarak jauh pengunjung situs web, tetapi bukan alamat IP eksternal mereka (karena Anda secara khusus mengatakan 192. *), maka Anda kurang beruntung. Inti dari perutean NAT adalah menyembunyikan alamat itu. Anda tidak dapat mengidentifikasi alamat lokal masing-masing komputer di belakang alamat IP, tetapi ada beberapa trik (agen pengguna, mungkin alamat mac) yang dapat membantu membedakan jika ada beberapa komputer yang mengakses dari IP yang sama.
sumber
hostname (1) dapat mengetahui alamat IP:,
hostname --ip-address
atau seperti kata pria, lebih baik digunakanhostname --all-ip-addresses
sumber
Anda dapat mencoba ini sebagai pengguna biasa di CLI pada host Linux:
Keluaran:
sumber
array('bond0'=>'10.66.42.83','bond1'=>'hosting Ip address','lo'=>'127.0.0.1', )
Saya mengerti. Saya menambahkan kode ini dalam file php,split()
fungsi telah DIHENTIKAN pada PHP 5.3.0. jadi sarankan untuk menggunakanexplode()
sebagai gantinyaSaya mencoba di pc Windows dan itu berhasil dan juga berpikir bahwa akan bekerja di Linux.
sumber
Ini sangat sederhana dan jawaban di atas adalah hal-hal yang memperumit. Cukup Anda bisa mendapatkan alamat ip lokal dan publik menggunakan metode ini.
sumber
Itu mudah. Anda bisa mendapatkan nama host dengan kode sederhana ini.
Atau Anda juga bisa menggunakan
$_SERVER['HTTP_HOST']
untuk mendapatkan nama host.sumber
Saya mengotak-atik pertanyaan ini untuk php sisi server (berjalan dari terminal Linux)
Saya meledakkan 'ifconfig' dan memangkasnya ke alamat IP.
Ini dia:
Dan tentu saja ubah 'wlan0' ke perangkat jaringan yang Anda inginkan.
Output saya adalah:
sumber
Jika Anda berada dalam lingkungan pengembang di OS X, terhubung melalui Wifi:
sumber
Itu berhasil untuk saya.
sumber
PHP_SELF
Mengembalikan nama file dari skrip saat ini dengan jalur yang berhubungan dengan rootSERVER_PROTOCOL
Menampilkan nama dan revisi protokol yang diminta halamanREQUEST_METHOD
Mengembalikan metode permintaan yang digunakan untuk mengakses halamanDOCUMENT_ROOT
Mengembalikan direktori root tempat skrip saat ini dijalankansumber
Coba ini
sumber