我在本地设计一个网站,我正在测试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的原因?
谢谢:)
答案 0 :(得分:1)
您不应将您的IP地址存储在无符号整数字段中。以varchar格式存储它应该可以解决您的问题。整数期望正常数字,而不是其中包含多个.
的数字。