2017-07-13 68 views
-3

我需要知道連接客戶端的MAC地址, 我該如何在PHP中執行此操作?如何在訪問我的網站時獲取客戶端MAC地址?

+0

第一..你是如何把mac地址?你有沒有網絡背景? –

+0

你需要告訴我們你的代碼。 – Vagabond

+0

檢查了此.. https://stackoverflow.com/questions/3011878/how-to-detect-the-mac-address-of-the-user-viewing-our-website-using-php?rq=1 –

回答

0

正常情況下,安全問題是不可能的。由於MAC地址是您的機器地址,您的服務器無法訪問您的機器。 MAC地址不會在設備連接的局域網之外廣播 - 它永遠不會離開路由器並傳遞到服務器。

+0

你能否建議我另外提供其他信息以使用戶獨特,我的意思是說,如果用戶訪問我的網站將其獨特的身份存儲到數據庫中,並且每當他們再次訪問我的網站時其身份不存儲,請訪問其已存儲的 – ali

+0

您可以通過組合客戶端IP和客戶端設備。雖然不能保證,但這總會給你正確的結果。但至少你可以保持最大的獨特身份。 – Avishake

0

我不認爲這是可能的,除非它的桌面應用程序運行在用戶的機器上。

+0

你能詳細說明一下我的用戶可以獲取用戶的mac地址嗎?他們訪問我的網站時用php – ali

+0

總之你不能用php獲取mac地址,可以得到的最接近的信息就是客戶端ip地址。 –

+0

可以請你告訴我關於獨特訪問者的其他信息,我想將我的網站訪問者作爲獨特的vsitor存儲到數據庫中,並且你知道ip對於用戶來說並不是唯一的 – ali

0

在互聯網上,你不能。但如果客戶是本地網絡(LAN)上,創建一個PHP文件,並把這個

shell_exec("sudo $arp -an ".$_SERVER['REMOTE_ADDR']);注:確保運行 sudo visudo 添加 默認的Apache用戶到sudoers文件和在某處添加"www-data ALL=NOPASSWD /usr/bin/arp"到文件的底部。

0

除非客戶自己發送消息,否則不能。

這是因爲MAC地址是僅用於本地連接的本地地址。計算機使用它與本地網絡(LAN)中的其他設備進行通信,例如計算機,路由器,打印機等。 這也意味着擁有客戶端的MAC地址對於長時間通信也是無用的,因爲它們不是在同一個網絡中。

爲了與本地網絡(WAN)外部的設備通信,使用了IP地址和端口號。 路由器使用IP地址來知道數據的發送位置,而端口號通常用於最終路由器中,將公有IP地址轉換爲專用IP地址(192.168.XX,172.16.XX,10.XXX) ,被稱爲NAT。 目標計算機也使用端口號來知道哪個程序/進程應該發送數據。

0

我知道這個線程有點老,但我搜索了很多網絡試圖找到同一問題的解決方案。經過大量的搜索網絡和大量的解決方案和代碼從未奏效,所以我寫了下面的兩段代碼。

請記住,您只能獲得您的局域網上的機器的mac地址,沒有辦法通過瀏覽器獲取mac。希望這可能也會幫助其他人。

<?php 
$ip_address = $_SERVER['REMOTE_ADDR']; 
$mac = `arp $ip_address | cut -d " " -f4`; 
echo "<br />Your Mac is: "; 
echo $mac; 
?> 

上面的第一個版本是我可以得到的最簡單的版本。

而下面的其他更復雜,因爲它也會帶來,如果它的代理和主機名。

<?php 
$http_client_ip = $_SERVER['HTTP_CLIENT_IP']; 
$http_x_forwarded_for = $_SERVER['HTTP_X_FORWARDED_FOR']; 
$remote_addr = $_SERVER['REMOTE_ADDR']; 
$hostname = gethostname(); 


if (!empty($http_client_ip)) { 
    $ip_address = $http_client_ip; 
} else if (!empty($http_x_forwarded_for)) { 
    $ip_address = $http_x_forwarded_for; 
} else { 
    $ip_address = $remote_addr; 
} 

//$output = shell_exec('arp -n $ip_address'); 
$mac = `arp $ip_address | cut -d " " -f4`; 


//echo "<br /> <br />Your hostname is: $hostname"; 
//echo $hostname; 
echo "<br />Your Mac is: "; 
echo $mac; 
//echo "<pre>$output</pre>" 

?> 

再一次,我只是想在這裏留下來幫助別人。

相關問題