Newsgroup: it.comp.www.asp
Titolo: Sondaggio in ASP

Ciao a tutti,
sto implementando in ASP un sistema per i sondaggi simile a quello presente
su AspItalia; vi premetto che mi appoggio su un DB SQL Server costituito da
2 tabelle: una contenente i quesiti del sondaggio, l'altra contenente le
risposte ai vari quesiti.
Detto cio' vi espongo il mio problema: ho dei dubbi su come realizzare il
controllo per evitare che un utente possa rispondere piu' volte allo stesso
sondaggio (o meglio, non so quale sia il criterio adottato dalla maggior
parte dei siti che offrono questo tipo di servizio).
Io ho pensato di utilizzare l'indirizzo IP del client (ricavato dalla
ServerVariables("HTTP_REFERER")) e di impostare un tempo minimo entro il
quale il voto non sia accettato; per realizzare una cosa di questo tipo ho
pensato alle seguenti 3 soluzioni:
1) inviare un cookie temporaneo sul client e verificare successivamente che
non sia presente.Questa soluzione comunque la escluderei per 2 motivi
(correggetemi se sbaglio):
- l'utente subito dopo aver risposto al sondaggio elimina il cookie dalla
propria macchina e risponde di nuovo;
- browsers differenti (es. Netscape e Explorer) non condividono i cookies,
per cui riuscirei a votare almeno una volta con ogni browser installato
sulla mia macchina
2) creare una variabile d'applicazione il cui nome sia composto dall'IP del
client e dall'identificativo del sondaggio (nel mio caso un ID numerico
presente in una delle 2 tabelle del DB) e memorizzarci la data/ora di
risposta al sondaggio. In questo caso per avere la certezza che il controllo
funzioni sempre dovrei impostare il timeout della Session in modo tale che
sia maggiore/uguale al tempo di attesa che ho stabilito per poter rivotare
3) salvare in una terza tabella del DB l'indirizzo IP del client,
l'identificativo del sondaggio e la data/ora di risposta al sondaggio e
usarla poi per fare le opportune verifiche.
Non so se le soluzioni a cui ho pensato siano quelle piu' corrette, ne
tantomeno se sia sufficiente usare come discriminante per il voto il
semplice indirizzo IP (infatti non ho una grossa conoscenza di come funzioni
l'assegnazione di un IP dinamico da parte del provider e di come questo
possa piu' o meno influire sul mio controllo).
Ciao e grazie a chiunque mi possa essere d'aiuto,
SA

sondaggio
<ZAP>
Partiamo da un presupposto: il tuo utente e' una persona normale e non
Jack Lo Squartatore, ergo: non gliene frega niente di votare 55 volte
il tuo sondaggio e se gli capita di votare due volte lo fa' per errore
e non per intenzione fraudolenta. A questo punto il meccanismo-cookie
e' piu' che sufficiente, tieni pero' conto che il cookie potrebbe
non essere accettato dal browser. Un'altra soluzione potrebbe essere
il voto via e-mail. A questo punto ti basta controllare l'indirizzo
di posta elettronica (che e' sicuramente univoco).
In linea di massima NON ESISTE un modo sicuro al 100% per evitare che
chi vuole voti piu' di una volta, si tratta solo di dare quel minimo
di fiducia al tuo utente.
Del resto, se non si vince niente e non si guadagnano soldi, non
vedo proprio perche' la gente vorrebbe votare 'n' volte.
Davide

Potresti anche usare una variabile session che non ti permette di votare se
l'hai gia' fatto.
Forse e' un po' pesantina ma uno dovrebbe uscire e rientrare ogni volta per
rivotare....uno dopo due o tre volte si stanca.
Comunque tieni presente che quelli su Internet sono sondaggi di massa,
ovvero non targettizzati, quindi e' anche accettabile che uno possa votare
500 volte e tu lo riconosca come 500 persone diverse