如何检测用户的设备?

时间:2016-06-29 13:07:33

标签: php algorithm security cookies

我正在尝试创建一个让用户登录的系统(比如记得我检查过)。好的我有这样一张桌子:

// cookies
+---------+-------------------------+------------------+------------+------------+
|   id    |         email           |     cookie       | date_time  |   device   |
+---------+-------------------------+------------------+------------+------------+
| int(11) |      varchar(50)        |   varchar(128)   |  int(11)   |            |
+---------+-------------------------+------------------+------------+------------+
| 1       | jack_2009@gmail.com     | ojer0f934mf2...  | 1467204523 |            |
| 2       | peter.zm@yahoo.com      | ko4398f43043...  | 1467205521 |            |
| 3       | matrix_john23@gmail.com | 34fjkg3j438t...  | 1467205601 |            |
| 4       | peter.zm@yahoo.com      | 0243hfd348i4...  | 1467206039 |            |
+---------+-------------------------+------------------+------------+------------+

如您所见,此用户peter.zm@yahoo.com已通过两个不同的设备登录:

| 2       | peter.zm@yahoo.com      | ko4398f43043...  | 1467205521 |            |
| 4       | peter.zm@yahoo.com      | 0243hfd348i4...  | 1467206039 |            |

因此email列不是唯一的,每个设备都有自己的行。

我的问题:如何填写device列?

为什么我需要确定设备?因为当用户删除浏览器的cookie时,我的网站会将他识别为新用户,并在上面的表格中为他创建一个新行。所以过了一会儿,表格中会有一些冗余的行。

例如:想象peter只有两个设备(笔记本电脑,手机)。他上面有两排。好的,他删除了浏览器的cookie并登录。会发生什么?我的网站在上面的表格中创建了一个新行。现在peter上方的表格中有3行(而他只有两个设备)。所以肯定这三行中的一行是多余的。这就是我需要检测设备以删除冗余行的原因。

2 个答案:

答案 0 :(得分:1)

上次与您的应用程序交互时使用User Agent字符串怎么样?

作为额外的纵深防御安全措施,您还可以验证用户代理是否与之前使用的用户代理匹配,以减轻会话劫持。请注意,任何浏览器或操作系统升级都会使该设备上的“记住我”失效。

作为旁注,您最好不要使用唯一ID而不是电子邮件地址,因为这样可以在将来更新用户的电子邮件时更容易。

答案 1 :(得分:0)

使用网络身份验证api或凭据api