IP 地址在使用 PHP 的 SQL 中存储为 0


IP address is stored as 0 in SQL using PHP

我正在本地设计一个网站,我正在测试PHP中的一个函数,该函数捕获并存储客户端的IP地址,但是我只是得到一个值0。代码为:

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'];
}

然后将 ip 添加到 mysql 中,并使用代码存储为整数:

   $query = "INSERT INTO users (id, email, salt, passhash, regdate, last_login_date,      regip, last_login_ip) VALUES ( NULL, ?, ?, ?, NOW(), NOW(), ?, ?)";
    $stmt = mysqli_prepare($dbc, $query);

    //i Interger
    //d Doubles         
    //s Everything Else

    mysqli_stmt_bind_param($stmt, "sssii", $email, $salt, $passhash, $ip, $ip);

值仅为 0 的原因是我在本地运行网站,还是我错过了一个步骤?

谢谢:)

不应将 IP 地址存储在无符号整数字段中。以 varchar 格式存储它,它应该可以解决您的问题。整数期望一个正常的数字,而不是包含多个.的东西。