2012-04-17 101 views
10

我会试着详细说明我的问题。设置数据库以跟踪哪些用户点击了哪些链接?

我最近在我的大学获得了入门级兼职开发人员职位,努力提高我的开发技能。尽管过去我使用过MySQL,但它只是简单地在单个课程中进行了介绍,因为我大多是前端人员(HTML/CSS/JS)。

无论如何,雇用我的部门有一个专门为来港学生设计的网站,让他们适应大学。它有教程和视频供他们观看等。为了访问该网站,他们必须登录他们的大学帐户(使用LDAP)。帐户名称格式为abc1234。

现在,我的问题是我需要为工作人员创建一种方式来跟踪新生看过哪些教程/视频。他们希望我使用数据库来做到这一点。可能会有数千名学生,他们希望能够确切地看到哪些学生有/没有点击每个链接/观看每个视频。

我应该如何为此设置数据库?将会有多个他们想要跟踪的链接/教程/视频。奖励积分,如果有方法跟踪哪些用户观看了视频直到结束,但不是必需的。

我相信我需要使用PHP来处理浏览器和数据库之间的交换,对吗?

谢谢任何​​帮助或提示。 :)

+1

你了解主键和外键之间的关系吗?如果不是的话,你需要从关系数据库教程开始 - http://www.phpknowhow.com/mysql/mysql-basics/ - 但总之,你最终会得到一张充满学生和表格的表格与视频。然后,您将拥有第三个表格,通过将学生与主视频的主关键字链接到学生与视频之间建立关系,通常将其中一个主键与另一个主键相链接,如果完成,则可能包含日期字段和位字段。 – RThomas 2012-04-17 21:42:17

+0

这是一个“前端设计师”的头。我们有一个3人的团队,并分配4-6周的时间来获得一个完整的跟踪系统,比如这个工具(我们跟踪哪些电子邮件以及哪些链接在什么时间点击哪些电子邮件,甚至之后他们去哪里)您需要从一个通用处理程序提供来自数据库的链接,以某种方式知道它是哪个学生并将其保存到另一个表中。你需要几个表和sql调用。 – ppumkin 2012-04-17 21:52:18

+0

@RThomas:那么多表格是必要的吗?我以为我可以用一张桌子做这个; *有和自动递增的ID, *用户ID(来自LDAP,它们都是像abc1234一样构造的) *六列来表示视频链接 然后每当用户点击一个链接时,检查他们的ID是否是已经在桌子上了。如果不是,请附加它。还要将当前日期和时间附加到他们点击的链接上。这里需要主键/外键吗? – Prefix 2012-05-03 20:04:20

回答

4

你可以简单地创建一个PHP脚本来为它们检索请求的链接,同时也为MySQL添加一个值。

如果我要做到这一点,我可能会做这样的事情:

<a href="getResource.php?res=video1.mpg&type=video">Video 1</a> 

而在PHP中,我会简单地获取资源,类型,然后从会话的用户ID,把它们到数据库中,然后检索他们正在寻找的资源。要跟踪他们是否观看了整个视频,您可以使用javascript观看播放器即将结束的事件,然后使用没有拖动条的外观。

+0

你好, 这正是我想要做的。如何从会话中检索用户ID?我可以弄清楚剩下的部分,但我难以忍受的那部分。他们使用LDAP登录后,如何检索他们的凭证以存储在我的数据库中? – Prefix 2012-04-27 19:37:12

+0

大概5年后,我还没有对LDAP做任何事情。我仔细阅读了PHP手册,并假设你有[this](http://www.php.net/manual/en/function.ldap-bind.php)代码。 您需要开始会话,并从登录脚本的POST中检索用户名和密码。 'if($ ldapbind){ $ _SESSION ['userid'] = $ ldapusername; header(“Location:http://yourserver.com/page.php”); } else { echo“login failed”; }' 然后,您的脚本只需从'$ _SESSION'中获取用户标识,并使用它来更新数据库。让我知道你是否需要更多的帮助。 – Wally 2012-04-28 01:21:41

+0

会话存储只能在单个页面上工作吗?我已经建立了一个登录页面,并且已经连接到LDAP正常工作。我开始了一个会话,并设置了会话变量。然后,我将用户重定向到“教程”页面。当我尝试访问存储的会话变量时,他们没有设置。我如何让会话变量在域中保持不变? – Prefix 2012-05-02 20:25:25

3

你需要例如一个表“users:id,name等......”和一个表“clicks:user_id,url”。

跟踪链接点击,你可以做这样的事情:

<a hreF="log_click.php?url=<?php echo urlencode("some_url?some=param&etc=anything"); ?>"> 

log_click.php

<?php 
$url = $_GET['url']; 
$user = /* ie. $_SESSION['user_id'] */ 
/* insert to database */ 
header('Location: '. $url); // maybe need urldecode($url) here 
exit; 
?> 
+0

嗨, 感谢您的回复;我朦胧的部分是我需要写的PHP来获取来自LDAP的用户ID。它是$ _SESSION ['user_id']? – Prefix 2012-04-27 19:38:28

+0

ldap信息不会自动显示在会话变量中。在php – 2012-04-27 22:58:52

0

有趣的项目。您应该从当前加载的页面中提取用户,并将其存储在每个用户的访问页面日志(数据库内)中。

+0

中有'ldap_ *'方法 - 现在我应该怎么做呢? :) – Prefix 2012-04-26 06:14:02

相关问题