Newsgroup: it.comp.lang.perl
Titolo: Informazioni per realizzazione contatore

Ciao a tutti,
devo realizzare un semplice contatore per le mie pagine,
pero' vorrei che questo contatore non conteggiasse i reload, pero'
non so come fare, cioe' come fare a sapere che si e' eseguito un reload??
Inoltre non dovrebbe conteggiare neanche quando un utente ritorna nella
pagina (si intende nell'arco di una stessa sessione, cioe' sono nella pagina A, vengo
contato, vado in B, vengo contato nella pagina B, torno in A e non mi deve contare).
Invece se chiudo e riapro il browser e ritorno nella pagina mi deve contare!
Spero di essere stato chiaro :-)
Ho pensato che forse dovrei utilizzare un cookie temporaneo che venga cancellato immediatamente
alla chiusura del browser che ne dite?
Se pero' un utente ha i cookie disabilitati non funzionerebbe!
Esistono altre possibilita'?
Grazie
Ciao
Fabrizio
Email: 
xi...@xibio.it
Home page: 
http://xibio.virtualave.net

 non so come fare, cioe' come fare a sapere che si e' eseguito un reload??
l'unica cosa che mi viene in mente (ma che pero' richiede che tutte le
pagine siano caricate dinamicamente) e' usare una tecnica di user tracking
consistente nell'aggiungere al pathinfo un'ID di sessione random. Via via
che l'utente naviga si porta dietro l'ID e quindi puoi controllare se una
pagina e' gia' stata visitata o meno. Quando l'utente esce dal browser e
rientra viene generata una nuova ID e quindi una nuova sequenza di
conteggio.
p. es. Supponi di avere un cgi accessibile tramite l'url:
http://www.tuosito.it/track
e di avere una webroot 'logica' sotto (p. es.) /home/web/tracked
Se tu l'utente si connette alla pagina
http://www.tuosito.it/track/ID/questo/file.html
(dove ID e' un identificativo di sessione generato dal CGI) il tuo cgi cerca
e serve il file
'/home/web/tracked/questo/file.html'. Contemporaneamente ti tieni un file di
log in cui registri l'accesso a 'questo/file.html' solo se non ce n'e' gia'
un altro marcato con l'identificativo ID
ID deve essere generato automaticamente dal cgi quando questo si accorge che
l'utente sta tentando di accedere un file senza possedere un identificativo
di sessione.
Cioe' se l'utente cerca di caricare
http://www.tuosito.it/track/questo/file.html
 il cgi si deve accorgere che
nel pathinfo non c'e' un identificativo di sessione, lo deve inventare e
generare come output semplicemente
Location: 
http://www.tuosito.it/track/ID/questo/file.html
Bisogna ovviamente che il cgi non confonda un identificativo di sessione con
un possibile nome di un file, quindi bisogna che ID sia codificato in
qualche modo a piacere.
P. es. l'ID potrebbe essere (o contenere) l'ora unix dell'istante in cui
viene generato. In questo modo risolvi anche il problama della gente che
bookmarka l'url completo di ID perche' puoi fare in modo di definire
un'expiration time per le ID generate e considerarle scadute (quindi non
piu' riconoscibili come ID) dopo un certo periodo di tempo.
Se l'utente si riconnette con la stessa ID dopo che questa e' scaduta allora
il CGI la ignora, ne genera un'altra e va avanti come se niente fosse.
Se qualcuno ha idee migliori su tecniche di tracking no-cookie degli utenti
lo dica che mi sembra un tema interessante.
ciao, marco
--
Marco Cacchiani                                
e-mail:ma...@sirius.pisa.it
Public pgp key:         
http://www.sirius.pisa.it/marco/pgp_public_key.asc
Sirius Servizi Informatici                     e-mail: 
in...@sirius.pisa.it
Parco Teatro Pasolini, 1                       Phone:  +39 (50) 865120
I-56019 - Vecchiano                            Fax:    +39 (50) 860260
(Pisa - ITALIA)                                
http://www.sirius.pisa.it/

 lo dica che mi sembra un tema interessante.
La tua idea č certo ottima, anche se non semplicissima da realizzare!
Adesso non voglio niventare la soluzione del secolo, ma solo dire la mia
in argomento (che forse sarebbe piů appropriata in it.comp.www.cgi!).
La tecnica che preferisco č quella dei cookies: del tipo: invio un
cookie al client e subito dopo lo vado a leggere per vedere se č stato
accettato. In caso negativo, redirigo l'utente ad una pagina che avverte
l'utente che non puň fare questo e quello poichč il suo browser non
accetta i cookies.
D'accordo che l'utente va assecondato, nei limiti del possibile; ma non
quando si mette a rimpere i ___________ perchč non mi accetta un
semplice cookie piccolino ed innocuo!
Tutto, ovviamente, IMVHO!
Ciao
M.
-- 
:wq

ciao, marco
Ok ho + o - capito cosa intendi, pero' vorrei evitare di generare le pagine dinamicamente,
io vorrei qualcosa da richiamare dalla pagina con "exec ....." o "img src.......", cioe' come si fa
normalmente con quei contatori che vengono offerti da vari siti.
Penso che optero' sulla soluzione cookie.
Invece per gli utenti che hanno i cookie disabilittati si puo' utilizzare l'indirizzo ip, dandogli
pero' una scadenza, esempio dopo un'ora: le probabilita' che un altro utente con lo stesso ip
si ricolleghi nell'arco del tempo di validita' sono molto poche!
Se invece il primo utente rimane + di un'ora, pazienza verra' riconteggiato, pero' da quel momento
partira' un'altra ora e per essere nuovamente conteggiato.....insomma ci siamo capiti!
Ora pero' non so se con il Perl si puo' stabilire se l'utente ha i cookie attivati, si puo' fare??
Uhmmmmm, pensandoci mi sa che mi posso rispondere da solo: basta provare a settarlo e 
rileggerlo giusto?esiste un'altro metodo, come per esempio in javascript?


scusate sono nuovo e non ci capisco molto ma non basta leggere l'ip e
aggiungerlo in un'array giornaliero e che, ad ogni tentativo di
registrazione del counter , si vada a confrontare l'ip dell'utente connesso
con la lista che scadrà il giorno dopo !
--
 Visita 
WWW.GIGIOLAND.COM
   ICQ UIN : 72893095


si ma come si fa a leggere l'ip?
perche' sta roba mi interesserebbe anche a me
bau

 con lo stesso ip si ricolleghi nell'arco del tempo di validita' sono molto
poche!
Questo non e' vero.
Intere reti aziendali o cybercafe, o reti universitarie escono attraverso
firewall che mascherano gli IP privati interni con un unico IP, quindi
potresti tranquillamente trovarti con decine di utenti che simultaneamente
ti si presentano con lo stesso IP.



mi rispondo da solo
$ENV{'REMOTE_ADDR'}
oppure
$ENV{'REMOTE_HOST'}
bau

 si ricolleghi nell'arco del tempo di validita' sono molto poche!


E' vero non ci avevo proprio pensato!!
Allora dovro' limitarmi al controllo degli utenti con i cookie 
abilitati.
Ciao
Fabrizio
Email: 
xi...@xibio.it
Home page: 
http://xibio.virtualave.net



Cambia qualcosa tra i 2?
Dove si trovano le altre variabili (browser, OS..)?

 Dove si trovano le altre variabili (browser, OS..)?
tra i due ho visto che non cambia nulla, io pensavo di si
le altre variabili non so
$ENV{'HTTP_USER_AGENT'}
con questa vedi il browser, per il resto boh, se le trovi fammi un
fischio :)))
bau

 Dove si trovano le altre variabili (browser, OS..)?
C'e' uno script che fa al tuo caso nel thread successivo ('Nome del Browser').
Ciao
Marcello


si ma l'ho provato e printa solo le robe del server
non di chi legge la pagina
bau

 non di chi legge la pagina
La mia risposta era per Valerio (che voleva sapere il browser e il OS). Tutte le
informazioni che puoi sapere dell'utente navigatore sono quelle di cui fin'ora
si e' parlato (IP,host,browser e OS), altre (poche direi) le puoi recuperare
facendotele passare da un JavaScript (ad esempio la risoluzione video), ma non
pensare di riuscire a carpire il nome dell'utente o anche il suo indirizzo di
e-mail.
Ciao
Marcello

 e-mail.
Ragazzi, tutto questo e' ampiamente OT qui.
Pls, email privata o NG appropriato.
