繁体   English   中英

会话中的PHP登录系统问题!

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM