这是我在网站上控制身份验证的代码。我不确定我的逻辑是否正确。如果用户名和密码正确,则会发生以下情况:
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 :( 可以否决选民评论,以便我知道要注意什么?