Php 登录和注销后重新生成会话id的实现
我阅读了这里的问题,安全堆栈交换,phpsec网站和更多(不能把所有的链接放在这里)。我想实现在登录和注销后重新生成会话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../
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()
,尽管感谢您的回答,它可能会以某种方式帮助我。