2012-02-09 3 views
0

아래 코드는 내 IP 주소의 처음 두 자릿수 만 반환하는 것으로 보입니다. 어떻게 전체 IP 주소를 얻을 수 있습니까?MySQL에 표시 할 전체 IP 주소 받기

$ip2 = $_SERVER['REMOTE_ADDR']; 

편집 : 나는 latin1_swedish_ci VARCHAR (30)로 MySQL로 놓겠. 전체 IP를 표시하는 형식이 변경 되었습니까?

EDIT 2 : 아마도 형식을 변경하는 것이 나의 쿼리 일 수 있습니다. 여기에 있습니다 :

$query1 = sprintf("INSERT INTO values VALUES (NULL, 'phoenix', %d, '%s', %d, %d, %d, NULL)", $submissionid, $fullurl, $uid, $ip1, $ip2); 

mysql_query($query1) or die(mysql_error()); 
+0

로컬 호스트 또는 외부 서버에서 실행 중이십니까? 데이터베이스에 저장 하시겠습니까? – VictorKilo

+0

더 많은 코드를 보여줄 수 있습니까? 그것은 전체 IP를 제공해야합니다. –

답변

4

$ip2 = $_SERVER['REMOTE_ADDR']; 

아무 문제가 전혀 없다 당신은 단지 처음 2 자리 숫자를 포함하는 것 말하지만, 나는 $query1 만이 포함되어 있기 때문에이 가정을 만들어 같은데요.

%dsprintf()에 입력하면 $ip2의 정수 값을 얻으려고합니다. IP 주소는 정수가 아니고 문자열이므로 %s을 사용해야합니다.

sprintf("INSERT INTO values VALUES (NULL, 'phoenix', %d, '%s', %d, '%s', '%s', NULL)", 
    $submissionid, $fullurl, $uid, $ip1, $ip2); 
0

% d 대신 % s을 쓰면 IP 주소를 삽입 할 수 있습니다.

2

이 PHP는 괜찮습니다. 포함 된 VARCHAR (30)에 저장

하지만 ...

나쁜 생각이다. 당신은 항상 IPv4 주소를 얻을 것이라고 가정하고있는 것 같습니다. 너는하지 않을 것이다.

예를 들어 보자 :

2001 : 470 : 1f04 : 드 : 22cf : 30ff : feb0 :

당신의 분야에 적합하지 않습니다 그 e22b!

+0

+1 ipv6이 출시됩니다! 음, 결국 ... 어쩌면. – msanford