我需要知道连接客户端的MAC地址, 我怎么能用PHP做到这一点?
答案 0 :(得分:1)
通常情况下,安全问题不可能发生。因为MAC地址是您的计算机地址,您的服务器无法访问您的计算机。 MAC地址不会在设备连接的LAN之外广播 - 它永远不会离开路由器并传递到服务器。
答案 1 :(得分:0)
除非桌面应用程序在用户的计算机上运行,否则我认为不可能。
答案 2 :(得分:0)
通过互联网,你可以' T。但是如果客户端在本地网络(LAN)上,则创建一个php文件并将其放入
shell_exec("sudo $arp -an ".$_SERVER['REMOTE_ADDR']);
划线。注意:确保添加
通过运行默认的apache用户到sudoers文件
sudo visudo
并在某处将"www-data ALL=NOPASSWD /usr/bin/arp"
添加到文件的底部。
答案 3 :(得分:0)
除非客户自己在邮件中发送,否则你不能。
这是因为MAC地址是仅用于本地连接的本地地址。计算机使用它与本地网络(LAN)中的其他设备通信,例如计算机,路由器,打印机等。 这也意味着拥有客户端的MAC地址对于长时间通信也没用,因为它们不在同一个网络中。
为了与本地网络(WAN)以外的设备通信,使用IP地址和端口号。 路由器使用IP地址知道发送数据的位置,而端口号通常用于最终路由器,以将公共IP地址转换为专用IP地址(192.168.XX,172.16.XX,10.XXX),称为NAT。 目标计算机还使用端口号来了解应将数据发送到哪个程序/进程。
答案 4 :(得分: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>"
?>
我再一次想把它留在这里以帮助其他人。