Php 登录和注销后重新生成会话id的实现

Php 登录和注销后重新生成会话id的实现,php,session,Php,Session,我阅读了这里的问题,安全堆栈交换,phpsec网站和更多(不能把所有的链接放在这里)。我想实现在登录和注销后重新生成会话id的。为此,如果用户成功登录和/或注销,我需要使用session\u regenate\u id。然后我想到的是将session\u regenate\u id放入登录功能(在身份验证完成后),并将其放入注销功能 示例代码: public function login(/.../) { /..if the authentication completed../

我阅读了这里的问题,安全堆栈交换,phpsec网站和更多(不能把所有的链接放在这里)。我想实现在登录和注销后重新生成会话id的。为此,如果用户成功登录和/或注销,我需要使用
session\u regenate\u id
。然后我想到的是将
session\u regenate\u id
放入登录功能(在身份验证完成后),并将其放入注销功能

示例代码:

public function login(/.../) {

   /..if the authentication completed../
   session_regenerate_id();
   /..Redirects to home page../
}

public function logout(/.../) {
   /..delete the cookie in the database../
   unset($_SESSION[$name]);
   setcookie($name, '', time() - 1);
   session_regenerate_id();
}
从我在
php.net
中读到的内容来看,它应该在
session\u start()
之后使用,但是我不能将它放在我的核心文件中(在那里可以找到
session\u start()
),因为它每次都会重新生成。我如何实现这一点?我应该在php的开头(开始)调用
require\u once“path/to/my\u core\u file.php”
之后调用
session\u regenate\u id()

我真的需要实现这一点来提高安全性,
phpsec网站
说只使用
session\u start()
会使网站容易受到攻击。你的任何想法都可以帮助我,谢谢

更新

后续问题,是否像这样未设置
unset($\u SESSION[$name])
将使会话无效(用于注销)?

您可以尝试
uniqid()
函数生成唯一id,并将其设置为会话变量,如
$\u SESSION['user\u auth']=uniqid()
,然后将其选中所有验证页面

if( !empty($_SESSION['user_auth']){
//code or page or redirect to access
}else{
/redirect to login page
} 
您可以尝试使用
uniqid()
函数生成唯一的id,并将其设置为会话变量,如
$\u session['user\u auth']=uniqid()
,然后将其选中以显示所有身份验证页面

if( !empty($_SESSION['user_auth']){
//code or page or redirect to access
}else{
/redirect to login page
} 

您使用的是过程编程还是面向对象编程?
session\u regenate\u id
session\u start
之后使用。请看第一个例子@SumonMahmud Object-oriented programming.@CharlotteDunois是的,我也读过,这是我的问题,这就是为什么我在php的开头(start)添加了“我应该
调用session\u regenerate\u id()
吗?”,您的问题说明您已阅读到,在
会话开始之前,必须使用
会话重新生成\u id
。但是您必须在
会话\u启动
之后使用
会话\u重新生成\u id
,因此它可以在关闭会话之前的任何位置。您使用的是过程编程还是面向对象编程?
会话\u重新生成\u id
会话\u启动
之后使用。请看第一个例子@SumonMahmud Object-oriented programming.@CharlotteDunois是的,我也读过,这是我的问题,这就是为什么我在php的开头(start)添加了“我应该
调用session\u regenerate\u id()
吗?”,您的问题说明您已阅读到,在
会话开始之前,必须使用
会话重新生成\u id
。但是您必须在
会话\u启动
之后使用
会话\u重新生成\u id
,这样它可以在您关闭会话之前的任何位置。我需要做的是在成功登录和注销后重新生成
会话\u id(),虽然感谢您的回答,但它可能会以某种方式帮助我。我需要做的是在成功登录和注销后重新生成
会话\u id()
,尽管感谢您的回答,它可能会以某种方式帮助我。