我有一个名为“sessions”的MySQL表,其中包含session_id,user_id,ip_address和last_updated字段。
我有以下问题:
如果用户之前没有访问过该网站,或者用户导航到其他网页,更新“会话”表的最佳方法是什么?
如果用户导航到需要他们登录的页面,那么在将他们重定向到登录页面之前,记住他们正在查看的页面的最佳方法是什么,以便他们可以返回登录后到它?
如何计算当前在线的会员/访客总数,以及当天的会员/访客总数,即使同一台计算机的用户使用不同的网络浏览器也是如此?
我想显示有多少用户/来宾正在查看某个页面。什么是跟踪用户当前所在页面的最佳方式。
非常感谢任何帮助。一段时间以来,我一直在讨论上面的问题! ;)
答案 0 :(得分:2)
您可以根据上次请求的时间戳计算用户何时在线。我在社交网站中使用了UNIX时间戳。
答案 1 :(得分:2)
如果用户之前没有访问过该网站,或者用户导航到其他网页,更新“会话”表的最佳方式是什么?
我不确定这里有什么问题。你现在如何更新表格?你在这个问题中提到的案例中有什么跟踪?无论他们之前是否访问过该网站,他们仍然会有一个会话。而且我认为无论他们导航到哪个页面,你都使用相同的代码来维护会话信息,不是吗?
如果用户导航到要求他们登录的页面,那么在将他们重定向到登录页面之前,记住他们正在查看的页面的最佳方法是什么,以便他们可以在返回之后返回到该页面。登录?
不记得了。将其作为参数传递给登录页面(通常在查询字符串上),然后在登录页面上检查该参数并将用户重定向到该页面,如果没有指定参数则将其重定向到默认页面。您可以使用urlencode()将值添加到查询字符串(和urldecode()以检索它)。
如果同一台计算机的用户使用不同的网络浏览器,我如何计算当前在线的会员/访客总数以及当天的会员/访客总数?
如果他们有不同的网络浏览器,他们仍会有不同的会话。您如何在会话跟踪中使数据到期?要计算当前会话的总数,您只需在该跟踪表上执行SELECT COUNT(session_id)
并过滤活动会话。由于用户并不总是主动告诉网站他们正在退出或离开,因此会话有一种难以跟踪到期的恶劣习惯。
跟踪当天的总会话数是类似的,您只需对SQL查询使用不同的过滤器。我认为last_updated
字段将成为过滤这两个查询的关键,要么按活动用户的会话超时(20分钟?)过滤,要么按当天用户的日期过滤。
我想显示有多少用户/来宾正在查看某个页面。什么是跟踪用户当前所在页面的最佳方式。
我猜您可以在跟踪表中添加current_page
列(或任何您想要调用的列),以便在每次更新会话活动时使用用户的当前页面对其进行更新。 (同样,您在每个页面上重复使用相同的会话跟踪代码,对吧?)这样,只要用户访问您网站上的某个网页,就会记录下来。
对于会话超时,你仍然遇到同样的问题,如果某人只是走开或关闭他们的浏览器,那么你会将他们显示为在该页面上,直到他们的会话到期或他们超出你的过滤器(20分钟? ),但这是可以预期的。
答案 2 :(得分:0)