Re: How to find callers local IP address?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux