我使用session来跟踪用户现场 - 有没有更好的方法

问题描述:

我有一点体系结构问题。
在我的网站上,用户可以注册,当他们根据用户ID登录网站时,我会将用户重定向到他的个人资料页面(类似facebook)。
用户可以从此页面点击列表中的其他用户并转到他的个人资料页面。
当用户加入他的朋友个人资料页面时,他可以访问该页面上的某些链接以查看有关此朋友的更多信息(如他的朋友列表,图片,信息等)。
所以我现在正在做的是当用户点击他的朋友,我保存sessionID中的friendID。 后来当我需要访问某些东西时,我首先从会话中获取数据并继续。
我不知道这种做法好坏吗?
它的工作原理,但我不知道有更好的方法吗?我使用session来跟踪用户现场 - 有没有更好的方法

恕我直言,这不是一个好设计。这就像使用全局变量来引用“当前的朋友”。显然,这使得无法一次查看关于两个不同朋友的信息,例如通过在另一个浏览器选项卡或窗口中打开“朋友信息”页面。

它还将“朋友信息”页面耦合到“朋友列表”页面。这意味着任何想要链接到朋友信息页面的其他页面都必须将该朋友ID放入会话中,并且您不得不通过其中一个页面查看朋友信息。如果用户为朋友信息页面书签,关闭他的会话,重新打开一个,并使用他的书签,它将失败。

最后,它使应用程序有状态,而它可以通过使用链接(如friendInfo?friendId=<the friend ID>)将“好友列表”页面链接到“好友信息”页面而保持无状态。

+0

在哪里例如Facebook保持跟踪数据。当我访问fb(fb.com/someFriend)上的某个朋友页面时,以及从URL中删除'someFriend'并单击信息时,我会获得该朋友信息。从哪里阅读ID数据? – 1110 2012-01-15 12:56:45

+0

我是世界上没有Facebook账户的4位开发人员之一。抱歉。如果朋友* JohnSmith *的URL是'fb.com/JohnSmith',那么你有你的答案:它从URL中提取朋友的标识(JohnSmith)。 – 2012-01-15 13:00:08

+0

我只是想克隆一些功能:)如果我从url中删除JohnSmith,它就会迷惑我,它仍然知道我单击了哪些用户信息。 – 1110 2012-01-15 13:03:05