如何在 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 地址?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Laravel 5+中获取客户端IP地址?

如何在 PHP 中获取已连接客户端的 MAC 和 IP 地址?

如何获取web客户端IP地址

Laravel 5.5 中的用户 IP 地址和位置

如何使用 IOCP 获取客户端真实 IP 地址和端口?

如何在 PHP 中获取客户端 IP 地址