什么是session_id,session_regenerate_id和session_name用于?

Ada*_*han 10 php session

好吧我是一个新手在会议上让我们想象我们有一个小的登录网站,

这是一个逻辑

  1. 登录
  2. 如果密码正确=使用$ _SESSION [isaloginuser] = 1
  3. 检查会话以查看if $ _SESSION [isaloginuser] = 1的菜单
  4. 显示菜单
  5. 用户想要注销
  6. 未设定的会议
  7. 破坏会话系统

它用的是什么

session_register
session_destroy
session_unset
session_start
Run Code Online (Sandbox Code Playgroud)

在什么地方session_id及的session_regeneratesession_name进去?在php网站上它说

session_id()用于获取或设置当前会话的会话ID.

我还是不明白,为什么我们还需要它们呢?在真实环境中它做了什么?

Gum*_*mbo 14

不,你不需要使用它们.一般来说,你所需要的只是

session_id并且session_name要获取和设置当前会话ID和会话ID名称(默认为PHPSESSID).session_regenerate_id可用于重新生成/更改当前会话的会话ID.例如,如果您希望每10分钟刷新一次会话ID,或者在更改与会话关联的用户的真实性状态后,这可能很有用.

  • 好的,但它在现实世界中做了什么?你在其中一个项目上使用它吗?为了什么 ? (2认同)

Ham*_*ite 10

session_regenerate_id() 用于防止会话固定.

会话固定意味着以下内容:您访问网站并检查您的会话ID.然后,您操纵另一个用户使用您的会话ID访问该站点,然后登录.现在您以该用户身份登录并拥有他的权限,因为您使用的是同一个会话.

为了防止这种情况,请在用户session_regenerate_id()成功登录时为其提供新的会话ID .现在只有他拥有会话ID,并且您的旧会话ID不再有效.