2012-04-17 148 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