在 Laravel 中如何获取客户端的 IP 地址和 MAC 地址?

5

我正在开发 Laravel 项目。我需要获取访问网站的客户端 IP 地址和 MAC 地址。

有没有办法同时获取这两个地址呢?

我已经尝试过:

Request::ip();

我已经获取了客户端的IP地址,但是如何获取MAC地址呢?
提前感谢您的帮助。

2
这里有一个很好的回答来解决这个问题。 - nakov
2
可能是如何在PHP中获取连接客户端的MAC和IP地址?的重复问题。 - Mostafa Hussein
3个回答

3

是的,你可以做到

默认情况下,PHP具有内置函数来执行命令行命令

shell_exec

http://php.net/manual/zh/function.shell-exec.php

exec

http://php.net/manual/zh/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();

“EDITED”
在“routes”文件夹下的“web.php”文件中添加以下行:
Route::get('/getmacshellexec',function()
    {
        $shellexec = shell_exec('getmac'); 
        dd($shellexec);
    }
);

Route::get('/getmacexec',function()
    {
        $shellexec = exec('getmac'); 
        dd($shellexec);
    }
);

尝试访问这个URL。
yourproject/getmacshellexec  

AND

yourproject/getmacexec

请在下方友好地评论,如果您获得了任何输出。

你正在使用哪个平台,Linux还是Windows? - ManojKiran A
你是在实际的网络服务器上尝试吗? - ManojKiran A

0

exec()是一个用于在PHP中运行外部程序的函数。它返回命令结果中的最后一行。要获取MAC地址,请传递参数getmac,该参数将返回客户端的MAC地址。 getmac是一个获取MAC地址的CMD命令。

要获取MAC地址,我们使用exec()函数。

$macAddr = exec('getmac');

要获取IP地址,我们必须在控制器中包含使用Illuminate\Http\Request;,然后添加以下pre标记的代码。 它将提供网络的AP地址。

$ipAddr=\Request::ip();

它能在移动设备上运行吗? - Jay Momaya

0

服务器IP地址 您可以从$_SERVER['SERVER_ADDR']获取服务器IP地址。

服务器MAC地址 对于MAC地址,您可以在Linux中解析netstat -ie的输出或在Windows中使用ipconfig /all。

客户端IP地址 您可以从$_SERVER['REMOTE_ADDR']获取客户端IP地址。

客户端MAC地址 除非客户端与服务器在同一以太网段上,否则您将无法获得客户端MAC地址。

因此,如果您正在构建某种基于局域网的系统,并且您的客户端位于同一以太网段上,则可以通过解析arp -n(Linux)或arp -a(Windows)的输出来获取MAC地址。 但是,如果客户端不在局域网上呢?

那么,除非您可以让客户端自愿提供该信息并通过其他方式传输,否则您将没有办法。


1
答案归功于Paul Dixon - Mostafa Hussein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接