【发布时间】:2012-06-27 23:17:24
【问题描述】:
MySQL 中的 newsletter_ip 字段设置为 UNSIGNED INT (10)。我也尝试过 INET_ATON 来格式化数据,但我的结果总是看起来像 this。
这是我的部分处理代码:
//Retrieve data from user and create variables
$ip_orig = $_SERVER['REMOTE_ADDR'];
$ip = ip2long($ip_orig);
//Place into database
$sql = "INSERT INTO newsletter(newsletter_email, newsletter_ip, newsletter_date, newsletter_time) VALUES('".$email."', '".$ip."', '".$date."', '".$time."')";
在 ip2long 格式化之前我也尝试过这个 sn-p,但无济于事:
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'];
}
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
尝试使用 varchar(15) 代替字符串作为 IP 地址。
-
我相信您发送的值可能超出范围。使用 BIGINT 或 VARCHAR 存储为字符串。我也会考虑 IPv6 地址。
-
IP 最低。 15 个字符(IPv6 更长)。
标签: php mysql ip ip-address