如何检测本地ip地址


How to detect local ip address

这是我的代码来检测我的系统ip地址

<?php
if ($_POST['login']) {
    $uname = $_POST['uname'];
    $pass = $_POST['pass'];
    $email = $_POST['email'];
    $phnoe = $_POST['phnoe'];
    $ipd = $_SERVER['REMOTE_ADDR'];
    if (mysql_query("Insert Into nennetwork (name, email, password, phone, useripp ) Values ('$uname', '$email', '$pass', '$phnoe', '$ipd' )"))
        $pdmsg = "New Member Added!!";
}

和我的IP是192.168.7.16,但它是给服务器地址,如103.18.164.206 . .我要我的系统Ip这可能吗?

use $_SERVER['SERVER_ADDR'];

$_SERVER是包含诸如头、路径和脚本位置等信息的数组。该数组中的条目由web服务器创建。不能保证每个web服务器都会提供这些功能;服务器可能会省略一些,或者提供这里没有列出的其他一些。也就是说,在CGI/1.1规范中包含了大量这些变量,所以您应该能够预料到这些。

额外知识

  1. $_SERVER['HTTP_HOST'] -生成http://192.168.0.1/index.php
  2. $_SERVER['SERVER_NAME'] -生成www.example.com
  3. $_SERVER['SERVER_ADDR'] -生成127.0.0.1
  4. $_SERVER['REMOTE_ADDR'] -也给出127.0.0.1

编辑01

$ipAddress = $_SERVER['REMOTE_ADDR'];
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
    $ipAddress = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
}

似乎你的页面是托管在互联网网络(例如服务器的ip是2.178.x.x)。在这种情况下,我能说的是不能

Web服务器无法访问用户的网络内部。例如,你有一个wifi调制解调器和3个人连接。webserver只能看到你的外部(internet) ip地址,而不能看到内部(在wifi网络中,如192.168.x.x)

所以答案是:你不能