2012-02-22 9 views
0

私は、学校からの学生がiPads経由でログオンしているPHPページを持っています。プロセスのIPアドレスをログに記録する必要がありますが、それらはすべてメソッドIPと同じIPアドレスです私は次のものを使用しています:iPadsの絶対IPアドレス?

if (getenv(HTTP_X_FORWARDED_FOR)) { 
    $ipaddress = getenv(HTTP_X_FORWARDED_FOR); 
} else { 
    $ipaddress = getenv(REMOTE_ADDR); 
} 

各iPad固有のより深いIPアドレスはどれくらいですか?

+1

文字列を引用してください! 'getenv( 'HTTP_X_FORWARDED_FOR')' 'HTTP_X_FORWARDED_FOR'は定数ではありません(少なくとも、疑問*です)。 – deceze

+1

あなたはIPアドレスを記録することで何を得ていますか? –

+0

生徒がiPad上で使い道を誤用すると、iPadのIPアドレスを知っているので、どの学生に教えているのかわかります。 –

答えて

1

これはネットワーキングの現実です。あなたが得ることができる証明された唯一のアドレスは$_SERVER['REMOTE-ADDR']です、それはTCP/IPハンドシェイクでネゴシエートされたものです。そして、このアドレスは、ルータ、プロキシ、NATデバイス、またはあなたが「超えて見ることができない」もののアドレスかもしれません。 HTTPヘッダー内の他のものは完全には証明できず、信頼性が低く、簡単に偽装することはできません。

IPアドレスは完全に制御され、クライアントとサーバーの間のネットワークを完全に理解していない限り、一意であると見なされることはありません。

これは、IPベースのパケット交換ネットワークが、ネットワーク上のあるノードから別のノードに確実にデータを配信するために設計されているためです。 IPアドレスはその実装の詳細です。どちらも、ユニークIDの目的のために設計されていません。

0

iPadsのようなサウンドはNATの背後にあります。この場合、内部IPアドレスを取得できなくなります。可能であれば、iPadごとに固有のものではないでしょう。