如何在我的网站中跟踪用户会话?

时间:2014-01-02 21:25:58

标签: javascript php html session

我有一个有三页的网站。 blog.htmlhome.htmlgames.html

我在每个页面上向我的服务器发出ajax请求,以跟踪用户访问过的页面。

我想知道,跟踪用户sessions的最佳方法是什么。例如,我的朋友史蒂夫继续访问我的网站home.html,然后决定转到games.html,然后最终决定转到blog.html,然后关闭他的计算机。

这就像我对网页浏览进行分组的用户的整个“会话”。实施此项目的最佳做法是什么?

提前谢谢!

创意:一个想法是使用javascript参考的网址跟踪会话。这是一个好方法吗?

2 个答案:

答案 0 :(得分:4)

您可以使用PHP sessions这是针对此常见问题的开箱即用解决方案。

当你真的想要建立自己的教育活动时,这就是他们的工作方式:

当用户访问网站时,PHP脚本会检查是否已设置cookie。如果没有cookie,它会自动生成一个随机ID并将其写入cookie。这些SessionID和有关用户会话状态的所有信息都是服务器端保存的。当您拥有数据库时,可以将其存储在那里,但您也可以根据需要使用文件。

sessionID应该是唯一的,以避免重复并且无法猜测,以便没有用户可以伪造其sessionID来窃取另一个用户的身份。因此,sessionID的生成算法应包括当前时间(毫秒)和随机数。

当用户禁用Cookie时,您仍然可以将SessionID作为GET-argument放入网站的每个链接中进行跟踪。例如,当用户SessionID为1f6fe6894d32c5时,网址href="games.php"变为href="games.php?sid=1f6fe6894d32c5

当您使用url-method时,您还应该将sessionID绑定到IP地址,因为当用户向您的网站发布链接时,他们可能会忘记从URL中删除其sessionID,您的网站会相信每个点击该链接的人是同一个用户。但即使您检查IP,它仍然可能导致在同一代理或NAT路由器后面的用户之间无意(或故意)会话窃取。所以不要将URL sessionID用于任何安全问题。

答案 1 :(得分:1)

好吧,如果您只是想要添加用户访问过的页面,请将每次访问保存在数据库中,并附上日期/时间戳+ ip以及您需要的任何其他信息。

然后,您可以稍后使用此信息查看用户何时访问了任何特定网站。 您还可以通过向链接添加额外参数来跟踪用户来自的链接,即如果您在第2页上有2个指向主页的链接,那么这些链接可能如下所示 href =“home.php?ref = link2”,您也可以将此信息存储在数据库中。

有很多方法可以做到这一点,但最后,我建议使用评论中建议的现成软件。