Indeed, it is the basic concept of a NAT that external servers only see the public IP of the router and not the private LAN IP of the client behind the NAT. An alternative of passing the local IP as URL parameter/query string, is to pass it as custom request header. Best regards, Micha Am 20.03.2022 um 23:10 schrieb Aziz Saleh:
You can not access a request's internal IP with PHP. Maybe you can configure the switch to pass the IP as a parameter in the action URL. On Sun, Mar 20, 2022 at 6:03 PM Hans Åhlin <ahlin.hans@xxxxxxxxxxxxxx> wrote: 'SERVER_ADDR' The IP address of the server under which the current script is executing. https://www.php.net/manual/en/reserved.variables.server.php MvH / Hans Åhlin Den sön 20 mars 2022 23:00Hans Åhlin <ahlin.hans@xxxxxxxxxxxxxx> skrev: 'SERVER_ADDR' The IP address of the server under which the current script is executing. https://www.php.net/manual/en/reserved.variables.server.php Den sön 20 mars 2022 08:46Bo Berglund <bo.berglund@xxxxxxxxx> skrev: I have a script on my website, which is used to report (by email) state changes in home automation power switches. It is done by configuring the power switch with an "action URL" to be hit when a switch changes state. This works well as far as the switch state reporting goes. But I would like to also get the *internal LAN* IP address of the power switch device in my report so I can find it on the network. The IP changes when I move it between my locations... After googling a bit I have found this code snippet: if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } But when I use it in my reporting I am always getting the external Internet IP address of my router instead of the IP of the power switch. How can I extract the original device's local LAN IP address from which the call was sent? -- Bo Berglund Developer in Sweden