【问题标题】:How the server identifies devices by sessions? [duplicate]服务器如何通过会话识别设备? [复制]
【发布时间】:2016-10-30 22:02:52
【问题描述】:

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

$_SESSION['login'] = 1;

此会话仅适用于我的特定设备。所以我猜我的设备在stackovetflow的服务器上有一个东西,它可以根据那个东西识别我的设备。

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

【问题讨论】:

  • 不仅适用于设备,也适用于不同的浏览器。
  • @Rishi 不,那不是真的。如果我通过 Chrome 登录到 stackoverflow,我将不会登录到 IE 或 FireFox。
  • 在 cookie 中设置了一个随机值,这是您的浏览器和服务器之间的通用标识符。见stackoverflow.com/questions/7298974/…
  • @AlexK。因此,如果我复制所有设备的 cookie 并将其粘贴到另一台设备上,我也会在该设备上登录吗?
  • 可能是的,尽管服务器可能会检查除 cookie 之外的其他内容(但大多数人不会这样做,因为没有明显的理由这样做)

标签: php session


【解决方案1】:

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

此键可用于加载会话信息。会话信息可以存储在例如一个文件。

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

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

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

您的示例代码:

$_SESSION['login'] = 1;

在设置变量之前需要 session_start()。 这将加载会话(基于现有的有效会话 ID)或创建新会话(随机会话 ID,或根据配置传递会话 ID)。 “登录”和值将本地存储在服务器上。

客户端下次连接时,会读取session id,并根据这个session id取回$_SESSION中存储的数据。

【讨论】:

  • 谢谢.. 点赞
猜你喜欢
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2016-12-22
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
相关资源
最近更新 更多