2012-04-17 8 views
10

Trataré de explicar mi problema un poco más.configurando una base de datos para rastrear qué usuarios han hecho clic en qué enlaces?

Recientemente obtuve un puesto de desarrollador de medio tiempo de nivel básico con mi universidad, en un esfuerzo por mejorar mis habilidades de desarrollo. Si bien he usado MySQL en el pasado, solo se cubrió brevemente en un solo curso, ya que soy principalmente un tipo de front-end (HTML/CSS/JS).

De todos modos, el departamento que me contrató tiene un sitio web diseñado para estudiantes entrantes, para que se aclimaten a la universidad. Tiene tutoriales y videos para que puedan ver, etc. Para acceder al sitio, deben iniciar sesión en su cuenta de la universidad (que usa LDAP). Los nombres de cuenta tienen el formato de abc1234.

Ahora, mi problema es que necesito crear una manera para que el personal rastree qué tutoriales/videos ha visto el estudiante de primer año. Les gustaría que haga esto usando bases de datos. Es probable que haya miles de estudiantes, y quieren poder ver exactamente qué estudiantes han/no han hecho clic en cada enlace/visto cada video.

¿Cómo debo configurar las bases de datos para esto? Habrá múltiples enlaces/tutoriales/videos que quieren rastrear. Puntos de bonificación si había una forma de rastrear a los usuarios que vieron los videos hasta el final, sin embargo no es necesario.

Creo que necesitaré usar PHP para manejar el intercambio entre el navegador y la base de datos, ¿correcto?

Gracias por cualquier ayuda o consejo. :)

+1

¿Entiende las relaciones entre una clave principal y una clave externa? Si no es así, debe comenzar con un tutorial de base de datos relacional - http://www.phpknowhow.com/mysql/mysql-basics/ - Pero, en resumen, terminará con una mesa llena de estudiantes y una mesa llena con videos Luego tendrá una tercera tabla que crea una relación entre estudiantes y videos comúnmente llamada tabla de asignación al vincular la clave principal de uno con la clave primaria de otro junto con probablemente un campo de fecha y un campo de bit si se completó. – RThomas

+0

Esto es mucho más que una cabeza de "diseñadores frontales".Tenemos un equipo de 3 personas y asignamos entre 4 y 6 semanas para obtener un sistema de seguimiento completo como este wokring (hacemos un seguimiento de los correos electrónicos y qué enlaces se hicieron clic desde qué correo electrónico en qué momento e incluso hacia dónde fueron después). Debe comenzar con un controlador genérico para servir enlaces de la base de datos, que de alguna manera sabe qué estudiante era y guardarlo en otra tabla. Necesita varias tablas y llamadas sql. – ppumkin

+0

@RThomas: ¿son necesarias muchas tablas? Pensé que podría hacer esto con una sola mesa; * tiene y de incremento automático de identificación, * el ID de usuario (de LDAP, todos ellos están estructurados como abc1234) * seis columnas para representar el video une continuación, cada vez que el usuario hace clic en un enlace, comprobar para ver si su identificación es Ya en la mesa. Si no es así, añádalo. También agregue la fecha y hora actual al enlace en el que hicieron clic. ¿Las claves primarias/extranjeras son necesarias aquí? – Prefix

Respuesta

4

Simplemente podría hacer una secuencia de comandos PHP que recuperaría el enlace solicitado para ellos, al tiempo que agrega un valor a MySQL.

Si yo fuera a hacer esto, probablemente haría algo como esto:

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

Y en PHP, me simplemente obtener el recurso, el tipo y el ID de usuario de la sesión, ponerlos en la base de datos, luego recupera el recurso que estaban buscando. Para rastrear si vieron el video durante todo el proceso, puede usar javascript para ver si el reproductor llega a su fin, luego simplemente use un skin que no tenga una barra de fregado.

+0

hola, esto es exactamente lo que quiero hacer. ¿Cómo recupero el ID de usuario de la sesión? Puedo descifrar el resto, pero esa parte me deja perplejo. Después de que hayan iniciado sesión con LDAP, ¿cómo puedo recuperar sus credenciales para almacenarlas en mi base de datos? – Prefix

+0

No he hecho nada con LDAP en probablemente 5 años. Analicé el manual de php y supongo que tienes [este] (http://www.php.net/manual/en/function.ldap-bind.php) código. Debería iniciar una sesión y recuperar un nombre de usuario y contraseña del POST del script de inicio de sesión. 'if ($ ldapbind) { $ _SESSION ['userid'] = $ ldapusername; header ("Ubicación: http://yourserver.com/page.php"); } else { echo "error de inicio de sesión"; } ' Luego, tiene su script simplemente tome el ID de usuario de' $ _SESSION', y úselo para actualizar su base de datos. Dejame saber si necesitas mas ayuda. – Wally

+0

¿el almacenamiento de la sesión solo funciona en una sola página? He configurado una página de inicio de sesión y he logrado que la conexión a LDAP funcione correctamente. Comencé una sesión y establecí las variables de la sesión. Luego, redirijo al usuario a la página "tutoriales". Cuando intento acceder a las variables de sesión almacenadas aquí, no están configuradas. ¿Cómo puedo hacer que los valores de sesión sean persistentes en el dominio? – Prefix

3

necesita por ejemplo una tabla "users: id, name, etc ..." y una tabla "clicks: user_id, url".

para rastrear enlace de clics que podría hacer algo como esto:

<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

Hola, Gracias por la respuesta; La parte que no entiendo es qué PHP necesito escribir para obtener el ID de usuario de LDAP. ¿es $ _SESSION ['user_id']? – Prefix

+0

La información de ldap no aparece automáticamente en la variable de sesión. hay métodos 'ldap_ *' en php –

0

Interesante proyecto. Debe extraer al usuario de la página actual y almacenarlo en un registro de páginas visitadas (dentro de la base de datos) para cada usuario.

+0

, ¿y ahora cómo debo hacer eso? :) – Prefix

Cuestiones relacionadas