在 PHP 中安全地创建和销毁登录会话
这是我在网站上控制身份验证的代码。我不确定我的逻辑是否正确。如果用户名和密码正确,则会发生以下情况:
if(session_start())
{
session_regenerate_id(true);//without this the session ID will always be the same
$_SESSION['loggedInUser'] = $uName;
echo 'You are now logged in';
}
else echo 'Right password/username but session failed to start';
后续页面检查以查看用户是否通过以下方式登录
session_start();
if(isset($_SESSION['loggedInUser'])
{
//rest of page
}
else echo 'you must log in';
注销时,我有
session_start();//if I don't have this the next line produces an error
session_unset();//destroys session variables
session_destroy();//ends session
我红色没有在注销时调用session_start(),但如果我没有它,我会收到消息。我该如何解决这个问题?Trying to destroy uninitialized session
是否建议基于 IP 地址和用户代理创建指纹?我红了,这很糟糕,因为如果多台计算机在计算机实验室中,它们可以共享相同的IP地址,并且所有流量都通过代理,并且如果它是动态的,则同一台计算机可以更改其IP地址。另一方面,这种情况多久发生一次?为了防止所有会话劫持,可能值得使用几个阻止的有效用途。
即使您可以推荐信誉良好的文章,我也应该阅读以了解此主题,那就太好了,谢谢。
5/6 个答案的投票数少于 0 :(下台选民可以发表评论,以便我知道该注意什么吗?