接続クライアントの MAC アドレスと IP アドレスを知る必要があります。PHP でこれをどのように実行できますか?
ベストアンサー1
サーバーIP
サーバーの IP アドレスは から取得できます$_SERVER['SERVER_ADDR']
。
サーバーのMACアドレス
netstat -ie
MAC アドレスについては、 Linux またはWindows での出力を解析できますipconfig /all
。
クライアントIPアドレス
クライアントIPは次の場所から取得できます。$_SERVER['REMOTE_ADDR']
クライアントMACアドレス
クライアントの MAC アドレスは、次の特別な状況を除いて利用できません。クライアントがサーバーと同じイーサネット セグメント上にある場合。
つまり、LANベースのシステムを構築していて、クライアントがはarp -n
同じイーサネット セグメント上にある場合は、 (linux) またはarp -a
(windows)の出力を解析して MAC アドレスを取得できます。
編集: コメントで外部コマンドの出力を取得する方法を尋ねています。1つの方法はバックティックを使用することです。例:
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress)
{
$macAddr=$cols[1];
}
}
しかし、クライアントが LAN 上にない場合はどうなるでしょうか?
まあ、クライアントにその情報を自発的に提供してもらい、他の手段で送信しない限り、運が悪いですね。