Newsgroup: it.comp.www.php
Titolo: tracciare gli utenti

Ciao ragazzi, vorrei un consiglio su come effettuare un tracciamento degli
utenti.
Per farla breve, ho una pagina di login (usa le sessioni, fatta con DW MX e
phakt) che mi fa accedere ad un area riservata.
L'area riservata è tutta in php+mysql, struttura del db:
- id_page
- nome
- url
- target
- testo
sostanzialmente è una sola pagina che contiene un menu formato dalle
variabili $nome, $url e $target per formare un href, e con $testo che appare
in una pagina di dettaglio. Molto scarna e semplice.
Il mio problema è come tracciare gli utenti, esempio: pippo fa il login ed
entra, vede la pagina master.php?id_page=5 (che corrisponde nome =
pippolino).
Come faccia a vedere quante volte pippo ha visto la pagina pippolino? ....ed
altre ovviamente?
Grazie mille dell'aiuto!
Michele

 pippolino).
Ciao.
Una idea sarebbe avere due tabelle
[sessioni]
[sessioni_percorsi]
in sessioni registri i dati di ogni login utente (ip address, ora, sistema
operativo ecc...)
in sessioni_percorsi, avente come FK il campo id_sessione, registri la
pagina dove si trova l'untente, ogni volta che carichi le varie pagine...
$url_corrente="http://".$HTTP_HOST.$REQUEST_URI;
Spero di esserti stato utile
Mauro Cecamore
------------------------------
http://www.digitalavenues.org
------------------------------


Cosa intendi per FK?
Grazie....
Del ip e del sistema non mi interessa. la tabella degli utenti č:
id_user (chiave primaria auto)
nome (varchar)
cognome (varchar)
username (varchar)
passwd (password)
mail (varchar)
quindi potrei fare un ulteriore tabella, session_track:
id_sessione (chiave primare auto)
id_user (int)
id_page (int)
data (date)
url_corrente (text)
id_page per inserire anche il nome della pagina. Non serve a me, ma per il
mio cliente che vuole vedere chi si č connesso, qundo, quante volte, e su
che pagina!
puņ funzionare???
quindi facendo un autenticazione ho a disposizione le variabili di sessione:
username e passoword, url correte la prendo (come hai detto tu), la data ho
il formato 0000-00-00 e id_page......
....perņ, bho....c'č qualcosa che non mi convince!

 ....però, bho....c'è qualcosa che non mi convince!
Tipo?
Una volta che hai tracciato le singole pagine viste di ogni utente,
associato ad una sessione, bastano due query incrociate per produrre un
report significativo in tal senso e comprensibile ad un utente finale.
M.C.
--



risposta al TIPO: forse sono le query incrociate!
Di db non sono molto pratico, cmq uso mysql (che, a mia conoscenza, non
dovrebbe essere un db relazionale)....è questo che intendi per query
incrociate??

 wrote in message
WrYxc.441658$rM4.18...@news4.tin.it...

MySQL è un database relazionale.
Per FK si intende Foreign Key, cioè quando un campo di una tabella è
collegato logicamente ad una chiave di un altra tabella, nel tuo caso
id_user di session_track è FK con riferimento alla chiave della tabella
degli utenti.
Suggerisco l'uso di un libro di database teorico con riferimenti all'SQL
prima di continuare con il tuo progetto, in questo modo ti risolvi molti
dubbi prima di sbatterci contro la testa e impari qualcosa che non
impareresti continuando a fare applicazioni pratiche.


Ho letto un libro dal titolo "Sviluppare applicazione con php e mysql" ma
non l'ho trovato un libro molto interessante!
...sarà che non mi piace molto leggere, a differenza di provare e
riprovare???
Se mysql è un db relazionale, che differenza c'è tra quest'ultimo e
postgresql?
Ciao......
Michele

Non so se ho capito benissimo quello che ti serve (vista l'ora) ma, io ho
fatto una cosa simile nel mio sito.
Ho una pagina dove sono linkate un paio di song che ho fatto io :D Se
clicchi sui links si apre una finestralla che te le fa sentire. Per ogni
song traccio chi l'ascolta così posso dire quante persone l'hanno ascoltata
e, se mi interessasse, anche chi l'ha ascoltata.
Se la tua esisgenze è quella di vedere cosa ha visto un utente e quante
volte una pagina è stata vista puoi fare in questo modo.
Ti crei una tabella anagrafica con tutti i tuoi utenti (che già avrai) fatta
più o meno così:
ANA_UTENTI
cd_utente
ds_nome
Se non ho capito male le tue pagine sono presenti in una tabella e ogniuna
di questa ha un codice che la distingue. Quindi, ammettiamo che questa
tabella sia come di seguito:
T_PAGINE
cd_pagina
ds_file
Ora, quando un tuo utente si logga caricherà una pagina che non so ne qual'è
ne come gli viene presentata ma, per vedere quello che fa dopo o dove va,
basta che in ogni pagina fai un insert in una terza tabella, quella che ti
tiene traccia di cosa fa un utente.
Chiamiamo questa tabella, ad esempio, T_PAGINE_VISTE dove al suo interno hai
i seguenti campi:
T_PAGINE_VISTE
cd_della_tabella (non è fondamentale avere una chiave primaria)
cd_utente
cd_pagina
Ogni volta che apri una pagina, segni in questa tabella il cd dell'utente
loggato e l'id della pagina aperta. Con questa semplice tabella puoi vedere:
1. cosa ha fatto un utente specifico
2. quante volte una pagina è stata vista da un utente specifico
3. quante volte una pagina è stata vista in generale
Questa tabella non è una tabella di legame tra utente e pagina, perchè la
coppia utente/pagina non è univoca visto che un utente può vedere più volte
una stessa pagina. Per questo è una T e non una L e per questo non è
necessario un cd univoco. In questo caso il campo cd_della_tabella l'ho
messo solo per uniformità con le altre tabelle perchè di fatto su
T_PAGINE_VISTE lavori per cd_utente o cd_pagina.
Nel mio sito ho una struttura leggermente diversa perchè io mi porto dietro
un cd_sessione a cui punta un cd_utente. Ogni volta che accedi al mio sito
registro una sessione che mi porto dietro per tutto il sito. Il cd_sessione
mi da informazioni sul chi, quando e tante altre cose. Nell'esempio che ho
riportato qui non puoi fare una ricotruzione cronologica degli accessi di un
utente ad una pagina, nel mio sito invece, essendo prensete nella mia
tabella delle sessioni anche un campo data, posso dire in che giorni un
utente ha visto cosa e quante volte.
Sono stato chiaro? :P
Saluti...
 
http://www.overlookcafe.net
 - H o u s e F a s h i o n C l u b -
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 postgresql?
Provare e riprovare non serve assolutamente a nulla se prima non hai
studiato la teoria. Anzi rischi di perdere tempo, tanto tempo, a riscoprire
l'acqua calda.
Postgre e MySQL sono molto molto molto simili, su certi aspetti PostGre è
più avanti (select nidificate ad esempio, che il MySQL ha ma le gestisce in
modo inefficiente) su altri MySQL è meglio. Per una persona che inizia uno
dei due vale l'altro, per uno che ha esigenze elevate conviene pensare di
adottare SQL Server.

 (faccio un piccolo raffronto con la porcheria Access)!
Access lo utilizzi con delle finestre che graficamente ti permettono di
individuare campi, tabelle e altro ma, una volta che clicchi sul bottone che
ti darà il risultato che vuoi, quella stessa finestra non farà altro che
scrivere una istruzione 'sql' in base a quello che hai chiesto tu. In due
parole, la finestra crea la query per te.
Io ad esempio, che conosco pochissimo Access, quando lo uso le query me le
scrivo a mano perchè non ho mai preso dimestichezza con i sui wizard e mi
trovo molto meglio a scrivermi l'sql da solo che non farlo fare a lui. Io
uso Access, Mysql e Oracle allo stesso modo a prescidere dal linguaggio che
c'è dietro e che elaborerà i dati che prendo.
Grazie, saluti...
