如何获取登录用户的设备物理地址

我有一个辅导网站,用户可以在其中以导师或学生的身份加入。该站点位于 Laravel 5.4 中。注册后,我想限制单个用户只能从最多三个设备登录。


例如:当前的社交媒体让我们可以灵活地从任何地方和任何设备登录。就我而言。我想限制用户使用前三个设备。如果用户通过他的手机、他的电脑和他的标签登录,那么他应该无法通过任何其他设备登录。


我在 php 中尝试过,但那只给了我我的系统或服务器系统的 mac 地址。


ob_start();

system('ipconfig /all');

$mycom=ob_get_contents();

ob_clean();

$findme = "Physical";

$pmac = strpos($mycom, $findme);

$mac=substr($mycom,($pmac+36),17);

echo $mac;

有什么办法可以获得用户设备的Mac地址吗?这样做是否合法?请帮忙。


提前致谢。


海绵宝宝撒
浏览 294回答 3
3回答

开满天机

您实际尝试解决的问题并不像听起来那么简单,而且通过 MAC 地址进行处理并不是一个好主意。首先,关于整个 MAC 地址的一些快速事实:它们只出现在网络上的第一跳。一旦有路由设备挡路,您将看到的只是该设备的 MAC,因为从那时起,所有内容都是路由的,而不是桥接的该跃点可以是任何东西,具体取决于距离多远(或网络拓扑结构的复杂程度)——来自 ISP 的某种路由设备,来自 IX 的某物等因此,老实说,这并不是最好的判别式。乔希推荐了一个,我会推荐另一个。在您的用户存储中,无论在哪里,都可以添加存储数组的功能。在大多数关系数据库中(如果您正在使用它),它将以附加表的形式出现。使搜索与用户对应的条目变得容易。为简单起见,这里是这个想法。这是您的用户表:+---------------------------------------------------+|                        users                      |+----+----------+---------+------------+------------+| id | username | enabled | created_at | updated_at |+----+----------+---------+------------+------------+我们将创建user_tokens以配合它:+-------------------------------------------+|                user_tokens                |+-------+---------+------------+------------+| token | user_id | created_at | updated_at |+-------+---------+------------+------------+该表应该促进对给定用户的所有令牌的快速访问,并且令牌在所有用户中不应该是唯一的,只有一个,因此我们将(user_id, token)用作复合主键。我们还必须能够删除最旧的令牌,因此您将需要添加(user_id, created_at)为索引。每当新用户登录时,创建一个新令牌并将其与他们的会话(或会话替代)一起存储。如果会话数超过 N,则删除最旧的令牌以匹配计数。每当发出请求时,检查表中是否存在令牌。如果没有,那么您的用户根本就没有登录。由于该表的轻量级特性,在响应时间方面不应察觉到查找。

呼如林

您可以使用会话并检查用户拥有的当前会话数,如果大于 3,则拒绝登录。但是,如果您希望有一个生命周期限制,您可以为每个设备设置一个带有 uuid 的 cookie,并且限制为 3,只是有一个非常长的 cookie 生命周期并在每次用户登录时重置生命周期。

一只名叫tom的猫

要获取MAC 地址,我们使用 exec() 函数。$macAddr = exec('getmac');为了获取IP 地址,我们必须Illuminate\Http\Request;在控制器中包含 use ,然后添加以下 pre 标记的代码。它将给出网络的 AP 地址。$ipAddr=\Request::ip();
打开App,查看更多内容
随时随地看视频慕课网APP