服务器如何通过会话识别设备


How the server identifies devices by sessions?

当我登录到我的stackoverflow帐户时,可能stackoverflow为我创建了一个登录会话。像这样:

$_SESSION['login'] = 1;

这个会话只适用于我的特定设备。我猜我的设备在stackovetflow的服务器上有一个东西它基于那个东西来识别我的设备。

我的问题是那是什么?我的设备的哪些参数将被存储在服务器上?换句话说,会话如何仅为特定设备工作?

默认情况下,当创建会话时,它由称为会话密钥的字符串标识。在PHP中,默认情况下,它被存储为名为PHPSESSID的cookie。例如PHPSESSID = absuk44ocvs55mkp6eh1gh58q3

这个键可以用来加载会话信息。会话信息可以存储在例如文件中。

会话id可以被客户端以多种方式使用/存储。在PHP中,它似乎支持在URL中使用会话,但也支持在cookie中使用会话。虽然cookie也可以被禁用。

请注意,某些基于php的网站也可能以其他方式存储相关数据,而不是文件。例如,有些人可能会将其存储在数据库中。

然而,在大多数情况下,一些数据被存储在cookie中,用于跟踪用户。

您的示例代码:

$_SESSION['login'] = 1;

在设置变量之前需要session_start()。这将加载会话(基于现有的有效会话id)或创建新会话(随机会话id或传递的会话id,具体取决于配置)。"login"和值将被本地存储在服务器上。

下次客户端连接时,读取会话id,并且可以基于此会话id检索存储在$_SESSION中的数据。