2012-02-09 36 views
0

以下のコードは私のIPアドレスの最初の2桁だけを返すようです。どのようにして完全な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

関連する問題