[英]PHP Login System Problem On Sessions!
我对会话和登录/注销系统有一些疑问。
在我的系统中,首先要检查用户数据(用户名和密码)是否正确。 如果是这样,我正在注册一个会话: $_SESSION['loggedin'] = 1
那么我假设已登录,并且我始终检查$_SESSION['loggedin']
1是否。
但是,我最近观察到,其中一个用户登录后,假设他们进入了他们的页面: /profile.php?u=newuser
但是当他们在自己的页面中时,如果碰巧将URL更改为此: profile.php?u=newuser2
我的系统假设newuser2现在已登录:(我该如何解决此问题?什么是最好的和安全的用户登录方式?
最后,按照以下方式行得通吗? 假设我注册了$_SESSION['username'] = $username;
在这里,$ username数据是从数据库中检索的。 并且为了了解用户是否登录,我总是从数据库中检索用户名并检查$_SESSION['username'] == username
。 这合乎逻辑吗? 始终从数据库获取用户名会有效吗?
由于会话数据存储在服务器上,因此将用户名存储在$ _SESSION中并按照您所说的进行检查应该没有问题。
存储用户ID会更好,但是说实话这没什么大不了的。 当然,除非您允许用户更改其用户名。
profile.php不应具有$ _GET变量来决定编辑者。 它应该自动使用登录的人。即
而不是去
$username = $_GET['u'];
你应该使用
$username = $_SESSION['username'];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.