这是我的代码来控制网站上的身份验证。我不确定我的逻辑是否正确。如果用户名和密码是否正确下面发生了:安全地创建和销毁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 :(选民可能下降发表评论,所以我知道看出来
。 destroy.php)'只对不使用$ _SESSION'的较旧的不推荐使用的代码使用session_unset() – bitWorking
只要可能,您应该重新使用现有的身份验证框架,因为它确实很复杂。例如,看看https://github.com/delight-im/PHP-Auth – caw