Php 会话id、会话重新生成id和会话名称用于什么?
好吧,我是一个会话新手,让我们想象一下,我们有一个小小的登录站点 这是一个逻辑Php 会话id、会话重新生成id和会话名称用于什么?,php,session,Php,Session,好吧,我是一个会话新手,让我们想象一下,我们有一个小小的登录站点 这是一个逻辑 登录 如果password right=使用$\u会话[isaloginuser]=1 检查会话以查看$\u会话[isaloginuser]=1时的菜单 显示菜单 用户想要注销 取消设置会话 销毁会话系统 它用什么 session_register session_destroy session_unset session_start session\u id和session\u重新生成或session\u nam
session_register
session_destroy
session_unset
session_start
session\u id
和session\u重新生成
或session\u name
在哪里?
在php网站上,它说
会话_id()用于获取或设置
当前会话的会话id
我还是不明白,为什么我们需要它们呢?在真实环境中它做什么?不,您不需要使用它们。一般来说,你所需要的是
- 启动会话处理,以及
- 销毁存储的会话数据(这不会修改
),以及$\u会话
- 重置
变量(但也可以执行$\u SESSION
)$\u SESSION=array()
和用于获取和设置当前会话ID和会话ID名称(默认值为
PHPSESSID
)。可用于重新生成/更改当前会话的会话ID。例如,如果您希望每10分钟刷新一次会话ID,或在更改与会话关联的用户的真实性状态后刷新会话ID,则此选项可能会很有用。会话ID是会话的标识符。服务器存储客户机数据的方式是在cookie中。此cookie随每个HTTP请求一起由该客户端发送到服务器。PHP将cookie设置为随机字符串标记。此令牌标识客户机并将其与一组键值对相关联。会话变量的概念是cookie很容易被篡改。然而,会话ID是随机字符串,很难复制,因此增加了安全性。在5.3中被贬低,我建议不要使用。相反,只要使用
$_SESSION['varname'] = "value";
session_id如果您想获取存储在数据库中的会话id,那么就不需要使用它。会话名称,只设置一个名称,这不是必需的。重新生成是指如果你想创建一个新的id,这也是没有必要的,除非你的应用程序需要它,对于登录会话,我非常怀疑你会使用它
其他人,我希望你能理解他们的所作所为。但希望这能给我一些启示。我通常在创建购物篮时使用session_id(),这样我就可以跟踪该用户添加的内容。然后,一旦我从支付网关收到支付成功的响应,我就可以重新生成session_()这样,当他们回到我的网站上时,他们以前的篮子就不可见了,对我来说,这就像是一个新用户“进入”了商店。
session\u regenerate\u id()
用于防止会话固定
会话固定指的是:您访问一个网站并检查您的会话ID。然后您操纵另一个用户使用您的会话ID访问该网站并登录。现在,您以该用户的身份登录并拥有其权限,因为您使用的是同一个会话
要防止出现这种情况,请在用户成功登录时使用
session\u regenate\u ID()
为其提供一个新的会话ID。现在只有他有会话ID,而您的旧会话ID不再有效。不仅要输入密码,还要确保用户名正确:)当权限级别更改时,始终使用session\u regenerate\u ID
在会话上有两个很棒的答案。好的,但它在现实世界中起什么作用?你在你的项目中使用它吗?为了什么?@Adam Ramadhan:在现实世界中做什么?会话id、名称和重新生成。我们应该在登录时添加它吗?或者在注销时?在登录时这样做很重要。我认为注销时不必这样做,尽管这不是一个昂贵的操作。@Hammerite是一个很好的例子,但每次用户刷新页面时,session\u regenate\u id()
都会生成新的会话集,所以这不会影响会话中的会话?session\u regenate\u id()将在服务器上留下活动会话文件的跟踪。会话重新生成会话id(true)将替换旧的会话文件,而新的会话文件将被替换。$\u会话['cart']=null
不行吗?