MySQL中的newsletter_ip字段被設置爲UNSIGNED INT(10)。我也嘗試使用INET_ATON來格式化數據,但我的結果總是看起來像this。當使用PHP ip2long函數進行轉換時,IP地址被存儲爲0
這裏是我的處理代碼的一部分:
//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格式,無濟於事:
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地址的字符串。 – andrewsi
您[無法信任X-Forwarded-For](http://stackoverflow.com/a/3003233/238978)! –
我相信你可能會發送超出範圍的值。使用BIGINT或VARCHAR以字符串形式存儲。我也會考慮IPv6地址。 – Kermit