MySQL의 newsletter_ip 필드가 UNSIGNED INT (10)로 설정되었습니다. 또한 데이터 형식을 지정하기 위해 INET_ATON을 시도했지만 결과는 항상 this처럼 보입니다. , 어떤 도움이 많이 주시면 감사하겠습니다PHP ip2long 함수로 변환 할 때 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'];
}
: 나는 또한 아무 소용는 ip2long 포맷하기 전에이 조각을 시도했습니다
//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."')";
: 여기
내 처리 코드의 일부입니다 감사! IP 주소가 여러 점을 가지고, 또는이 IPv6 주소가 될 수 있기 때문에
IP 주소에 문자열 대신 varchar (15)를 사용해보십시오. – andrewsi
[X-Forwarded-For를 신뢰할 수 없습니다.] (http://stackoverflow.com/a/3003233/238978)! –
나는 당신이 범위를 벗어난 값을 보내고 있다고 생각한다. BIGINT 또는 VARCHAR을 사용하여 문자열로 저장하십시오. 또한 IPv6 주소를 고려할 것입니다. – Kermit