2014-03-03 50 views
0

你好,我有一个登录会话的问题。当我登录的用户我创造会话登录问题,如果我编辑用户名,而我登录

$_SESSION['username']

将用户重定向

header('location:profile.php?user='.$_SESSION['username']);

当我在编辑数据库用户的用户名,因为会话不匹配的用户名再出现问题。我尝试销毁会话并在更新时创建新会话,但用户显示为未登录,并且在链接中显示的是旧会话。

+3

**为什么**你在编辑数据库中的用户名?这是你经常做的事还是仅仅是为了特定的情况? – anurupr

+1

使用用户标识代替用户名。 – GuyT

+0

更新后设置新的会话值,像这样'$ _SESSION ['username'] = $ new_user_name;' – krishna

回答

2

在这种情况下,您需要一个唯一的永久标识符,可将会话与您的数据库行关联起来。与此匹配的典型行是用户标识,而不是用户名。

如果您需要用户名,您可以根据您的标识符运行查询,并从该处继续执行脚本。

当然,还有其他领域和方法可以帮助您实现这一目标,但从中获得的主要想法是不使用可以修改的标识符。正如你已经发现的那样,这样做会导致你的会话和数据库不同步。

+0

我想使用ID然后我想显示用户名在链接,而不是id = 232131。 :) – user3058067

+0

在您的用户登录页面上,当检查用户的存在时,拉下找到的行并获取用户名。然后你可以使用它重定向到'profile.php?user = $ xyz'(: – Sean