如何在 laravel 中获取客户端 IP 地址和 MAC 地址?
Posted
技术标签:
【中文标题】如何在 laravel 中获取客户端 IP 地址和 MAC 地址?【英文标题】:How to get Client IP Address and MAC Address in laravel? 【发布时间】:2019-07-12 12:25:03 【问题描述】:我正在从事 laravel 项目。我需要访问访问网站的客户的IP地址和MAC地址。
他们有什么方法可以同时获得这两个地址。
我用过:
Request::ip();
我得到了客户端的 IP 地址。但是如何获取MAC地址。
提前致谢。
【问题讨论】:
Here 是这个问题的一个很好的答案。 How can I get the MAC and the IP address of a connected client in php?的可能重复 【参考方案1】:是的,你可以做到
默认情况下,PHP 具有执行命令行的内置函数 命令
shell_exec
http://php.net/manual/en/function.shell-exec.php
执行
http://php.net/manual/en/function.exec.php
所以要获取mac地址写了函数
function getMAcAddressExec()
return substr(exec('getmac'), 0, 17);
echo getMAcAddressExec();
function getMAcAddressShellExec()
return substr(shell_exec('getmac'), 159,20);
echo getMAcAddressShellExec();
已编辑
在web.php
文件夹中的routes
文件中添加以下行
Route::get('/getmacshellexec',function()
$shellexec = shell_exec('getmac');
dd($shellexec);
);
Route::get('/getmacexec',function()
$shellexec = exec('getmac');
dd($shellexec);
);
然后试试网址
yourproject/getmacshellexec
与
yourproject/getmacexec
请在下面发表评论,您会得到任何输出
【讨论】:
你在哪个平台上使用 linux 或 windows 你是在实时网络服务器中尝试吗【参考方案2】:exec()
是一个用于在 PHP 中运行外部程序的函数。它返回命令结果的最后一行。要获取 MAC 地址,请传递参数getmac
,它返回客户端的 MAC 地址。 getmac
是获取MAC地址的CMD命令。
为了获取MAC地址,我们使用exec()
函数。
$macAddr = exec('getmac');
为了获得IP地址,我们必须在Controller中包含使用Illuminate\Http\Request;
,然后添加以下pre标签的代码。它将给出网络的 AP 地址。
$ipAddr=\Request::ip();
【讨论】:
【参考方案3】:服务器 IP 您可以从 $_SERVER['SERVER_ADDR'] 获取服务器 IP 地址。
服务器 MAC 地址 对于 MAC 地址,您可以在 Linux 中解析 netstat -ie 的输出,或者在 Windows 中解析 ipconfig /all 的输出。
客户端 IP 地址 您可以从 $_SERVER['REMOTE_ADDR']
获取客户端 IP客户端 MAC 地址 除非在一种特殊情况下,您将无法使用客户端 MAC 地址:如果客户端与服务器位于同一以太网网段。
因此,如果您正在构建某种基于 LAN 的系统并且您的客户端位于同一以太网段上,那么您可以通过解析 arp -n (linux) 或 arp -a (windows) 的输出来获取 MAC 地址. 但如果客户端不在局域网上怎么办?
好吧,除非您可以让客户自愿提供该信息并通过其他方式传输,否则您将不走运。
【讨论】:
回复致Paul Dixon以上是关于如何在 laravel 中获取客户端 IP 地址和 MAC 地址?的主要内容,如果未能解决你的问题,请参考以下文章