ホームページ > バックエンド開発 > PHPチュートリアル > PHP はクライアントの MAC アドレスと IP アドレスの取得に失敗します。

PHP はクライアントの MAC アドレスと IP アドレスの取得に失敗します。

WBOY
リリース: 2016-06-23 13:47:36
オリジナル
994 人が閲覧しました

さまざまな Baidu とさまざまな検索の結果、PHP コードはサーバーの MAC のみを取得でき、クライアントの MAC は取得できません。IP アドレスはクライアントの外部ネットワーク IP のみを取得でき、実際のイントラネット IP (192.168) は取得できません。 .1.***)

そこで、js メソッドに目を向け、オンラインで見つけたプログラムをコピーしました。 誰もが次の方法を使用しているようですが、2 つの致命的な問題があります。

1. 生成された HTML ファイルを直接実行して MAC アドレスと IP アドレスを取得できますが、IE ブラウザーでのみ実行でき、ActiveX コントロールを実行するにはユーザーの許可が必要です。Google、Firefox、Safari はまったく応答できません。 。

2. php 内に js コードを埋め込むと機能しません。ローカルの localhost テストでは常にエラー (認識されない、*** が空であるなど) が報告され、サーバーへのアップロードも当然機能しません。

最初の問題は解決できません。localhost を使用して php ページをデバッグできた人はいるでしょうか。


WMI スクリプト HTML

<スクリプト言語="JScript" イベント="OnCompleted(hResult,pErrorObject, pAsyncContext)"
for="foo">
document.forms[0].txtMACAddr.value=unescape(MACAddr); 0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
スクリプト言語="JScript" イベント="OnObjectReady(objObject,objAsyncContext)" for="foo">
if(objObject.IPEnabled != null && objObject.IPEnabled != "未定義" && objObject.IPEnabled == true)
{
if(objObject.MACAddress != null && objObject.MACAddress != "未定義")
MACAddr = objObject.MACAddress;
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "未定義")
IPAddr = objObject.IPAddress(0);
if(objObject.DNSHostName != null && objObject.DNSHostName != "未定義")
sDNSName = objObject.DNSHostName
}


&lt; script language =" jscript "&gt;
var service = local.connectserver(); sdnsname;
service.securi Ty_.imperSonationLevel = 3;
Service.instancesofasync (foo, ' Win32_NetworkAdapterConfiguration')
name="txtMACAddr">



infurlyディスカッション(ソリューション)ケース「break」    preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a] -f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a- f][:-]"."[0-9a-f][0-9a-f]/i",$value,
$temp_array ) ){
$this->mac_addr = $temp_array[0]; 
休憩。 



unset($temp_array); 
return $this->mac_addr; 
}


function forWindows(){
@exec("ipconfig /all", $this->return_ar光線); 
if ( $this->return_array )
return $this->return_array; 
else{
$ipconfig = $_SERVER["WINDIR"]."system32ipconfig.exe"; 
if ( is_file($ipconfig) )
@exec($ipconfig." /all", $this->return_array); 
else
@exec($_SERVER["WINDIR"]."systemipconfig.exe /all", $this->return_array); 
return $this->return_array; 
}




関数forLinux(){
exec("/sbin/ifconfig", $this->return_array,$r); 
//echo "1234567";
// print_r($this->return_array);
echo "
";
$mac = new GetMacAddr(PHP_OS);

$macc=$mac->mac_addr; // MAC
の値;
//echo "1111";
echo $macc;//値を渡した後の表示



?&g t; ​​間違っていたらごめんなさい

これは諦めてください

これは諦めてください。元の投稿者は、php と js がどこで実行されているかを理解するためだけに、Baidu と Google に長い時間を費やしました。


心配しないでください。元の投稿者は、php と js がどこで実行されているかを理解するためだけに、Baidu と Google に長い時間を費やしました。


js は実現できますが、上で述べた 2 つの問題があるので、クライアントのイントラネット IP と MAC アドレスを取得することは不可能です。アドバイスを求める、確認を求める。 。 。

これは諦めてください

この機能を実装する方法はありませんか?無理ならスレッドを閉じて他の方法を考えます〜

3階さんの返信より引用:

これは諦めてください

この機能を実現する方法は無いでしょうか?それが不可能な場合は、投稿を閉じて他の方法を考えます〜

すぐに投稿を閉じてください
ブラウザプラグインを書いて、デスクトップCSプログラムを書いてください
PHPはサーバー側でのみ実行されます。クライアントから何かを取得することは不可能です


PHP はサーバー側でのみ実行されます。クライアントから何かを取得することは不可能です

さて、私はこれを知っていますが、php を使用した直接取得方法は諦めました。理論的には、フロントエンド ページにも .php という接尾辞を付けたいと思います。 , フロントエンドにはjsが埋め込まれていますが、実行はできるのですが、こちら側のjsの埋め込みがうまくいきません〜

6階さんの返信より引用:

3階さんの返信より引用:
これは諦めてください。

この機能を実装する方法はありませんか?それが無理ならスレッドを閉じて他の方法を考えます〜

すぐにスレッドを閉じてください
ブラウザプラグインを書いてデスクトップCSプログラムを書いてください

まあ、それしかないようです。当然のことですが、プラグインはどうでしょうか? js がうまく埋め込まれても、あまり役に立ちません~

あまり持っていない、初心者です。投稿してコミュニケーションするのが大変だったので、平均してすべてを捧げました〜

投稿者は解決策を見つけましたか? ? ? ? ?お答えください!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート