【问题标题】:Capture ip address of machine of the user捕获用户机器的ip地址
【发布时间】:2014-03-14 07:39:34
【问题描述】:
<?php
if (isset($_GET['action']) && ($_GET['action'] == 'submit')) {
    $name    = $_POST['name'];
    $message = $_POST['message'];
    $email   = $_POST['email'];

    $ip        = $_SERVER["REMOTE_ADDR"];
    $messageip = "User IP: $ip\n\n" . $messageip;

    $sql   = "SELECT * FROM tbl_user WHERE email = '" . $email . "'";
    $query = mysql_query($sql);
    $count = mysql_num_rows($query);
    if ($count >= 1) {

        echo "User Already in Exists<br/>";
    } else {

        $newUser = "INSERT INTO tbl_user(name,message,email,ip_address) values('$name','$message','$email','$messageip')";
        $query2  = mysql_query($newUser);

        if ($query2) {
            echo "You are now registered<br/>";
        } else {
            echo "Error adding user in database<br/>";
        }
    }
    echo $name . '<br/>';
    echo $message . '<br/>';
    echo $email . '<br/>';
    echo $messageip . '<br/>';
}
?>

我正在使用此代码来捕获 ip 地址,但我无法获取特定用户的机器 ip,我可以从中动态显示地址,所以有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: php ip


    【解决方案1】:

    您似乎连接了一个错误的(空)变量。

    尝试改变这个:

    $messageip = "用户 IP: $ip\n\n" . $messageip;

    到这里:

    $messageip = "用户 IP: $ip\n\n" . $ip;

    【讨论】:

    • 谢谢!它的工作......还有一个人认为“如果用户在路由器下工作,那么它会捕获机器IP还是路由器IP??”
    • 路由器IP很明显,因为那是他在“外”网络上的IP,即互联网。他在路由器 (NAT) 后面的 IP 地址实际上是他来自不同范围 (192.168....) 的本地 IP,检索此 IP 地址是没有意义的。基本介绍可以查看this link,更详细的解释可以查看NAT wikipedia page
    • 非常感谢!!寻求帮助。
    • 没问题。如果它解决了您的问题,您可以选择已接受的答案。
    猜你喜欢
    • 1970-01-01
    • 2015-08-19
    • 2018-03-18
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多