Newsgroup: it.comp.www.php
Titolo: sessioni che resistono anche alla chiusura del browser?

Ciao ragazzi, premetto che nel mio caso il fine dell'uso delle sessioni 
e' legato al contatore di accessi in home page.
Vorrei sapere quanti IP unici visitano in un giorno il mio sito, quindi 
le sessioni dovrebbero scadere ogni 24 ore.
La domanda e' quella in oggetto, visto che chiudendo il browser mi parte 
da capo la sessione e non mantiene il valore che gli assegno per il 
singolo utente.
Quale voce del file php.ini devo ritoccare?
Inoltre che differenza c'e' tra le voci session.cache_expire e 
session.gc_maxlifetime ?
Esiste la possibilità che dopo tot secondi con un semplice refresh e 
senza quindi chiudere il browser e riaprirlo la sessione scada 
automaticamente?? Anche qui che voce devo ritoccare?
Grazie mille per ogni aiuto.
Emanuele

Non usare le sessioni perchè anche se fosse possibile se uno si
collega in dialup, o resetta il router cambia indirizzo ip e così non
otterrai ciò che vuoi...
devi fare un semplice script che ti mette in una tabella di un database
ip e datetime, ogni volta che viene eseguito sto script controlli se
l'ip c'è.. se l'ip non c'è l'ho aggiungi con il datetime corrente..
se invece l'ip c'è ma è recente (ovvero delle ultime 24 ore) allora
non fai nulla..

 automaticamente?? Anche qui che voce devo ritoccare?
Devi impostare il tempo di vita della sessione agendo sulla direttiva
session.gc_maxlifetime.
Puoi farlo anche inline con la funzione
ini_set('session.gc_maxlifetime','1000');


 
Come hai detto prima se uno resetta il router o comunque ottiene un 
nuovo IP viene conteggiato doppio come visitatore. Viceversa tutti gli 
utenti di una LAN che visitano il sito avrebbero lo stesso IP e 
verrebbero conteggiati una sola volta.
Se vuoi contare gli IP da cui arrivano le visite va bene, se vuoi 
contare le visite giornaliere in modo univoco non molto, anche io ho lo 
stesso problema.

 stesso problema.
Piccola precisazione: non ti basare sull'IP per nessuna cosa.
Esistono provider come Fastweb che fanno uscire tutti i loro abbonati 
con lo stesso indirizzo. Ergo l'indirizzo IP del visitatore non è 
affidabile.
I vari siti utilizzano cookie con scadenza giornaliera/mensile (e che 
quindi sopravvivono al riavvio del pc o del router) per sapere se hanno 
già conteggiato lo stesso, oppure per salvare una chiave di sessione e 
riutilizzarla più avanti.
Luca

 Luca
Sì, ma anche questo non è sicuro al 100%: i cookie (a patto che uno li 
abbia abilitati) si possono comunque cancellare molto facilmente.
Tiz

comunque nessun metodo funziona al 100 %
io sono allergico ai cookie e non ne uso mai... riguardo il problema
fastweb è vero.. se lo si vuol fare quanto di piu perfetto basta
registrare ip, datetime e user agent (che pure si può cambiare ma a
poco senso farlo e sono pochissimi a farlo).
Per emulare i cookie basta far scadere questi dati dopo 60 minuti o 120
o quanto volete voi e si ottiene sicuramenteun risultato migliore
rispetto all'uso delle sessioni o all'uso dei cookie.


Una soluzione efficace è fare il conteggio mediante la verifica incrociata 
di più dati (non del solo ip). A titolo di esempio mettendo a confronto l'ip 
con:
a) il browser (modello, risoluzione, versione);
b) sistema operativo (modello, versione);
e possibilmente con altre informazioni reperibili lato client.
Procedendo in questo modo, le probabilità che due o più persone utilizzino 
la stessa configurazione di sistema appaiono più remote e dunque si ottiene 
un livello di precisione superiore.
Il livello di precisione è tanto maggiore quanto maggiori sono i parametri 
con cui l'ip viene confrontato.
Cooper.
-- 
www.blueware.it
www.italchat.it
 

Dopo 200 visitatori mi chiedo se un file.txt o una tabella di dbase 
contenente IP, info su browser etc. siano sempre consultabili con una 
certa velocità o rapidità senza intasare il server.
A parte questo credo che l'uso delle sessioni sia da accantonare per un 
contatore o file di log, l'unica soluzione restano i cookies. Amen.

 
Premesso il fatto che non si cambia il subject di un thread (o fai un 
nuovo thread oppure fai un reply con il vecchio subject) se un db si 
inchiodasse con 200 record ci converrebbe cambiare lavoro.
	Francesco

 un livello di precisione superiore.
Nel mio caso, avresti 250 persone uguali :-)
	Francesco

chiedo scusa per il subject.
Ma allora, con un numero di ip da memorizzare alto e vario in uno stesso 
giorno e con un tot numero di visitatori che accedono simultaneamente 
alla home, resta più facile e rapida da gestire la tabella di un dbase o 
un file txt?
Francesco F ha scritto:


indubbiamente piu performante è l'accesso a un db (se strutturato
bene).
Io un contatorino per uso personale con le sessioni l'ho fatto, poi ho
messo un crontab che ogni mese mi compatta le statistiche, sul sito
dove l'ho messo con 300-400 visite al giorno e a volte picchi di 1000 i
risultati sono soddisfacenti pochi mb di peso, è leggerissimo come
script e confrontato per mesi con php-stat, awstat, webalizer e i log
di apache è la cosa che piu si avvicina ai log di apache...
ah beh ovviamente se vuoi il non plus ultra opera direttamente sui log
di apache
Calendula ha scritto:


 ha scritto nel messaggio 
news:L2Nph.131$rX...@nntpserver.swip.net...

Non proprio, a te alla fine non interessa il contenuto, ma la sostanza. In 
altre parole ti interessa valutare se tutti quei parametri se messi a 
confronto (contemporaneamente) portano allo stesso risultato oppure no, in 
caso affermativo, abbiamo a che fare con lo stesso utente, diversamente no.
Questo indipendentemente dal fatto che alcuni dati in toto o in parte siano 
accessibili o meno, è difficile trovare ad esempio due ip uguali che abbiano 
le stesse precise e identiche condizioni per tutti gli altri parametri 
tenuti in considerazione, basterebbe anche uno solo di questi che differisse 
per distinguere che sono due utenti diversi.
E comunque è già difficile statisticamente che due ip identici per quel sito 
abbiano ad aversi nello stesso giorno con le stesse condizioni etc.
Quindi procedendo in questo modo un buon margine di precisione si ha sempre 
e comunque.
Cooper.
-- 
www.blueware.it
www.italchat.it
 

 abbiano ad aversi nello stesso giorno con le stesse condizioni etc.
E' stato fatto, non ricordo se in questo 3d, l'esempio di fastweb: un 
unico ip (o comunque una serie ristretta di ip dei router di "bordo" 
della rete fastweb) per servire tutti gli utenti della rete fastweb 
(che appunto è una sorta di grande rete privata).
In questo caso, è davvero facilissimo avere non due, ma centinaia di 
utenti con lo stesso ip, e identiche altre variabili considerate 
(browser, so, ecc ecc).
--
rob4you

 ha scritto nel messaggio 
news:mn.64f97d71f...@KIEDIMELO.IT...

Daccordo, ma di queste centinaia di migliaia di utenti fastweb, quanti sono 
effettivamente quelli che transiteranno con lo stesso ip su quel sito.
Gli utenti fastweb saranno in tutto 1 milione e anche di meno, di questo 
milione, dubito che tutti utilizzino lo stesso ip, per cui avremo tot 
indirizzi ip (un numero non certo poco) e per ogni ip, un numero limitato di 
utenti.
Per singolo ip, dubito che ve ne siano più di 1000, anzi probabilmente 
saranno molto meno.
Ora quali probabilità hai di ritrovare in uno stesso sito due ip identici di 
questi mille? e le probabilità di individuare delle diversità a parità di ip 
è molto alta.
Quindi è irrilevante anche in questo caso, il dato nel suo complesso.
Naturalmente imho :)
Cooper.
-- 
www.blueware.it
www.italchat.it
 

 le probabilità di individuare delle diversità a parità di ip è molto alta.
non e' un approcio scentifico questo.
per rintracciare gli utenti unici si usano i cookie, che hanno il
limite di poter essere cancellati, ma sono l'unico metodo certo per il
tracciamento univoco, tutte le altre gabole e tentativi sono palliativi
e poco seri


Ho già espresso questo pensiero ma sembrano non sentire.
Il fatto che tra tutti i "naviganti" ci possono essere un discreto 
gruppo che esce con il solito ip, che hanno la solita stringa del client 
e compagnia bella vengono ignorati.
Anche con il cookie non hai univocità di connessione: se due utenti 
usano il solito computer? Alla fine si ritorna all'utente e password, ma 
anche in questo caso un utente potrebbe aver richiesto due diverse 
password....
	Francesco

 password....
ma infatti si sa che l'utente unico e' una chimera. non e' veramente
tale, e' al massimo una postazione unica, a certe condizioni. resta
fermo che il sistema ottimale per rilevarlo sia il cookie

 automaticamente?? Anche qui che voce devo ritoccare?
session.gc_maxlifetime.
Tac
-- 
Using Opera's revolutionary e-mail client: 
http://www.opera.com/mail/

 contatore o file di log, l'unica soluzione restano i cookies. Amen.
Esatto.


 rimanere in memoria.
ma i contenuti dei cookies dei vari siti ho notato sembrare 'cifrati' o 
mi sbaglio?
A parte ciò per motivi di sicurezza può avere senso usare per es. l'MD5 
o SHA1 per occultarne il contenuto?
Spero torni utile anche a chi ha ancora dubbi sui cookies come me.
Grazie.
Emanuele



Dici ?
Come già detto gli user agent variano moltissimo. Questo è quello del mio  
firefox 2.0.
User-Agent: string(96): "Mozilla/5.0 (X11; U; Linux i686; en-US;  
rv:1.8.1.1) Gecko/20060601 Firefox/
2.0.0.1
 (Ubuntu-edgy)"
Dentro ad $_ENV ad esempio trovo il path di sistema (che difficilmente  
sarà uguale fra piu' utenti perchè viene modificato a volte dai programmi  
installati):
PATH: string(28): "/usr/local/bin:/usr/bin:/bin"
Ci sono funzioni in javascript per ottenere la risoluzione dello schermo  
ed altre informazioni sul client e si possono passare al server tramite  
l'invio di un form nascosto, magari crittandole un attimo.
Oltre a questo c'è il controllo su ip ed eventuale x-forward se presente.  
Oltre a questo setti un cookie.
Insomma, un po' di lavoro ce l'hai e può dare i suoi risultati.  
L'autenticazione resta la cosa migliore ma dipende dal motivo per il quale  
il filtro serve. Ad alcuni cliente non importa granchè che i loro utenti  
votino due volte un sondaggio (sopreso ?) mentre spesso detestano l'idea  
che uno debba loggarsi per votare.




Scusa e come faresti ad usare il cookie per evitare che uno voti due volte  
in un sondaggio?
Se lo cancella ri-vota e non c'è tanto da farci.
Non trovo molto di scientifico nemmeno nel tuo approccio.
E rassegnarsi ad una buona approssimazione non sarà scientifico, ma almeno  
è ragionevole. Perchè volendo barare esistono indirizzi email usa e getta  
per fregare i meccanismi di autenticazione, così come esistono servizi  
proxy gratuiti per fregare i controlli dell'ip.
Detto questo fregare i cookie è anche piu' facile e comodo. Inclusi i  
cookies di flash.


Non pensate che basta utilizzare i cookies perchè non è così e io
l'ho sperimentato e poi confortato da un articolo letto non so dove è
risultato che il 20-25% dell'utenza internet ha programmi che
gestiscono i cookies...
Quindi basandosi soltanto sui cookies il risultato non è quello che vi
aspetterete. Provate, fate i confronti ;-)


Uhm un sondaggio??? Allora il discorso cambia, le soluzioni efficaci (ma 
fino a un certo punto) sono 2:
1) tramite registrazione preventiva (con conferma email)
questa soluzione per quanto efficace può essere noiosa perchè l'utente è 
tenuto a perdere tempo, e può accettarla solo in certi casi non sempre, tipo 
quando il voto riguarda qualcosa a livello nazionale o comunque 
istituzionale.
2) tramite invio email
ovvero l'utente non ha bisogno di registrarsi ma dovrà solo inserire 
l'email, alla sua email verrà inviato un link, cliccando su questo link 
esprimerà la sua preferenza.
Pro: è che a email unica corrisponde voto unico; contro: l'utente può votare 
più volte usando diverse email, e per limitare il fenomeno si può ricorrere 
a verifiche incrociate tramite indirizzo ip, e altri parametri COMUNI 
presenti nell'header della email.
E' chiaro che il modo più preciso in assoluto per il voto e tale da non 
lasciare ambiguità è quello che prevede non l'uso di indirizzi ip, email, 
browser, sessioni, cookie e affini, ma i dati personali, ovvero essendo ogni 
individuo registrato e quindi presente nel database del ministero 
dell'interno (se non erro è questo il ministero competente) la votazione 
espressa attraverso l'inserimento di dati personali tali da identificare in 
modo univoco e assoluto l'individuo (i dati non possono essere falsati) 
rende la votazione sicura, in quanto:
a) se lo stesso individuo vota due volte, con gli stessi dati, il voto è 
conteggiato una volta;
b) se lo stesso individuo falsa i dati o anche uno solo di essi, poichè non 
risulterà una corrispondenza totale con i dati del database, questa viene 
annullata.
Però qui parliamo di situazioni di voto piuttosto sofisticate dove occorre 
evitare la falsificazione del voto a tutti i costi.
E non rientra nel caso del thread ma il principio, potrebbe costituire uno 
spunto su cui prendere esempio.
Dopotutto, i sondaggi si fanno nelle community e le persone per accedere 
alla community, devono essere iscritte, e quindi giustificare l'iscrizione 
come un "avente diritto al voto".
In questo caso è da rilevare che, il numero di utenti iscritti non 
coinciderà con il numero di visitatori, ma pure che un utente si iscriva con 
diverse email, per la comunity è irrilevante sapere se l'utente iscritto è 
unico e usa diverse email, perchè non potrà andare a controllare che ciò sia 
vero o falso, per cui si assumerà per scontato che ogni cittadino virtuale 
della comunity sia identificato tramite email in modo univoco.
Quindi pure che vi siano 4 utenti reali registrati con 60 email (15 a testa, 
di cui una vera e 14 false) per la community significa che ci sono 60 utenti 
e non 4.
Certamente poi nessuno ha interesse a perdere tempo a registrarsi 14 email 
solo per partecipare al voto... può succedere, ma è un caso più raro che 
mai.
Alla fine dunque tutte queste preoccupazioni sono inutili, è meglio agire 
come consuetudine supponendo che l'utente agisca in buona fede e non se ne 
parla piu :)
Cooper.
-- 
www.blueware.it
www.italchat.it
 

 è molto alta.
Ovviamente non ci sono statistiche alla mano :-) ma non è difficile 
ipotizzare che la probabilità non sia così bassa.
Se poi consideri che non solo fastweb, ma ogni rete privata è soggetta 
allo stesso trattamento (università, aziende, enti, abitazioni private 
con router, hot spot wireless), direi che le probabilità salgono...e 
anche di molto. ;-)
--
rob4you

 ma almeno è ragionevole
il cookie possiede gia' una buona approssimazione, e non ha gli
ulteriori svantaggi di altri metodi, anzi l'appossimazione di un cookie
e' piu' alta di quella di altre soluzioni. d'altronde non e' una cosa
che mi sono invetato io. qualsiasi servizio serio di statische serio si
appoggia ai cookie e non ha strani magheggi su ip, agent e altro.
poi sei libero di fare come vuoi, ma non sostenere almeno che sia la
soluzione migliore, perche' non lo e'

> direi che le probabilità salgono...e anche di molto. ;-)
Restando nell'esempio della rete fastweb (dannata e amata da 
me...cliente fastweb da due anni e mezzo):
- po... pu... :-) non immaginate quante volte mi ritornano le email 
indietro...e volete sapere perché? Perché il server di posta del 
destinatario mette in black list il mio ip, contrassegnandolo come 
spam. Perché questo? Semplicemente perché il server del destinatario si 
vede arrivare dallo stesso indirizzo ip (di bordo della rete fastweb) 
migliaia di email, e allora mi dice "Vade retro Satana!".
E io mi attacco!!!
Ecco dunque che un uso comune, lecito e tranquillo di internet, mi 
viene impedito, per il modo in cui sono impostati i controlli in 
remoto.
Considerando poi intere aziende, con macchine e installazioni di 
default, tutte esattamente identiche, con stessi parametri, ovviamente 
saranno riconosciute come un unico utente.
Quale è il rischio? Esser privati di una possibilità (fare il 
sondaggio) solo per il modo in cui è strutturato un controllo.
Di contro, vista dalla parte opposta, basta che cambio la risoluzione 
(su questo computer ne posso impostare 4), e cambio browser (ne avrò 
almeno 4 qui), e faccio un release-renew dell'ip, e ho già, con un 
unico computer, almeno 16 combinazioni possibili.
Ovviamente è giustissimo che, come in ogni situazione ingegneristica, 
bisogna scegliere il grado di approsimazione voluta, noto che la 
certezza non la si potrà mai ottenere.
Ma vale la pena IMO considerare il piu possibile tutti gli aspetti 
prima di agire.
--
rob4you
www.outofmind.eu

 debba loggarsi per votare.
SI certo, come sempre tutto dipende dall'importanza di quella 
votazione. :-)
Ovviamente la mia email non era per cercare il pelo nell'uovo, perché 
ahimé sono ben conscio che una soluzione sicura al 100% non c'è.
E in fin dei conti secondo me ciò che conta considerare è l'uso che si 
deve fare con i dati:
- se si deve votare per dire se nella ricetta originale delle farfalle 
al salmone và il cognac o meno è un conto :-)
- se si deve votare per le elezioni politiche del 2035 (berlusconi sarà 
ancora vivo) :-) è un altro conto! :-)
--
rob4you
www.outofmind.eu

solo.
Concordo. Aggiungo magari che si puo' (se non costa troppo) archiviare,
oltre al voto, gli altri dati identificativi dell'utente (UserAgent...)
e poi, SOLO nel caso di anomalie come "cluster" di voti identici andare
a vedere se ci sono indizi di imbroglio.
Usare i cookie a questo punto da' anche un altro modesto vantaggio: dal
momento che fregarli e' semplice, chi volesse imbrogliare si fermerebbe
all'imbroglio semplice (la cancellazione dei cookie), e potrebbe essere
individuato a posteriori.
Rimane vero che se uno sa come funziona il sistema, e lo vuole fregare,
non lo fermi in nessun modo (forse, chissa', col DNA...).
Leonardo
-- 
Geordie - he's a man, there's little doot about't,
He's done all he can, wha' can do withoot't?
Doon there cam a blade, linkin' like me lordie,
He wad drive a trade, a' the loom of Geordie.



Nella pagina A metti i dati che ti servono in un array e serializzalo.  
Passalo in base64 e registralo sul db mettendo come id una stringa in md5.  
Poi setta un cookie con quell'id.
Nella pagina successiva ripesca i dati dal db cercando l'id letto dal  
cookie. Decodifica il base64 e il risultato.


 soluzione migliore, perche' non lo e'
Non è una soluzione migliore, è una soluzione che migliora. Da usare in  
aggiunta ai cookies.


 ancora vivo) :-) è un altro conto! :-)
Quello si farebbe solo via autenticazione, ovviamente. Ma anche lì, nel  
caso l'autenticazione venga hackata in qualche modo, qualche aiuto in piu'  
male non fà.


 aggiunta ai cookies.
e in cosa migliorerebbe i cookie?
aggiungi ad un'informazione di univocita' il fatto che invece potrebbe
non essere univoca? (il che e' falso, ma dipende solo dal metodo di
controllo)