質問
の私はホスティングLinux上で訪問者のMACアドレスを知るにはどうすればよい(nginxの)?の
イーサネットユーザーから。
感謝します。
解決
あなたはPHPを通じてこれを取得することはできません。
ネットワークプロトコルスタックで使用されています。 HTTP通信を行う場合、Webサーバーは、高レベルの通信を担当するHTTPプロトコルを使用しています。このプロトコルは、順番に(識別のためのIPアドレスを持っている、V4またはV6)IPプロトコルの上に実装され、(ストリームのような接続とポート番号をもたらします)TCPプロトコルの上に実装されています今度は、イーサネットプロトコルの上に実装されます。
イーサネット・プロトコルは、あなたと仕事に必要となるものです。これは、送信元MACアドレスと宛先MACアドレスの両方を持っています。しかし、最も残念ながら、これで問題がたくさんあります。
まず、それが伝えるデータがアクセスおそらく難しいです。私はそれを行う方法につまずいたことがないので、私は「おそらく」と言う。
第二には、彼らはあなたのサイトにアクセスしたとき、あなたのクライアントのルーターのアドレスを取得する多くのように、あなたは、イーサネットレベルでクライアントのMACルータアドレスを取得します。彼らはそこに、(ルータの全体の多くは、そのリレーのデータは、インターネットの他の部分にそこに存在しているので、あなたのサーバが直接、干渉任意のルータせずに自分のクライアントマシンに配線された場合にのみ起こるもの)の任意のルータを通過していない場合を除きあなたが受け取るだろうMACアドレスは、クライアントのだろうという見込みはありません。
第三に、Apacheは、データのアクセスを試みることはありません。 PHPはApacheがそれを与えるネットワーク環境に「サンドボックス」されているのでそして、あなたはイーサネットプロトコルに巻き戻すことができます方法はありません。
PHPから、ウェブサイトからの訪問者のMACアドレスをアクセスするので、可能ではありません。
編集あなたの質問からPHPの一部を取り出してきたようです。だから、明らかに、最後のポイントはもう耐えられないだろう。
他のヒント
あなたは、PHPでそれがHTTP
に含まれていないことを得ることができませんhref="https://stackoverflow.com/questions/3309122/get-mac-address-from-http-request"> のです。 PHPは(私はこれはPHPはここに、あなたのウェブサーバ上で実行されていると仮定しています)で動作するように持っているすべてのHTTP要求であるので、あなたは、MACアドレスを取得することができなくなります。これは訪問者の側で実行されている何かを必要とします。
この月、してもしなくてもよい仕事。私はそれはしかし、外部のクライアントのために、それは間違っている可能性があり、LANクライアント上で動作します知っています。私は過度に私のネットワーキングを知らないが、それの価値があるショットですね。
あなたがWindowsまたはLinuxのいずれかのarp -aコマンドを実行すると、、それはあなたがMac用の解析ができ、自分のARPレコードを出力します。
私の知る限りではそれ以外は、、アパッチ(およびそのためのPHPは)ちょうどvarsのそのENVにMACアドレスを与えるものではありません。
*編集:申し訳ありませんが、それは動作しません...より良いユーティリティは、しかし、それはちょうどあなたのルータのMACを与えるだろう。
ARPメッセージを送信されます。 あなたはこれをしたい場合は、、クライアントは...
の間で無ルーターと、直接サーバーに接続する必要がありますしかし、そのような場合には、その意志の作業をARPメッセージ...私はより良いツールを知りませんが、それだけでMACアドレスの(ルートで)のpingを行うには少し無駄なようです。
MACアドレスがネットワークプロバイダのためにのみ表示され、私は(あなたのインターネットホストは、例えばルータのMACアドレスを見ることができます)正しいだ場合、あなたはPHPでそれを得ることができるとは思わない。