2009-05-19 5 views
0

Dans les sites d'interrogation, un utilisateur (non connecté) ne peut voter qu'une seule fois sur une question. Comment l'application Web se souvient-elle que l'utilisateur a déjà répondu à une question particulière? L'one-way est de placer un cookie pour chaque question qu'elle répond. une autre façon de sauvegarder l'identifiant de la question dans la session. nous pourrions également stocker la valeur dans un db, avec l'identifiant de session.Meilleure façon d'implémenter la mémorisation de plusieurs valeurs dans une application Web

Y a-t-il un autre moyen de le faire?

Répondre

0

Cela dépend du temps dont vous avez besoin de vous souvenir.

La solution de cookie ne fonctionnera pas pour les clients qui n'accepteront pas les cookies.

L'enregistrement des questions répondues dans la session fonctionne correctement tant que la session est active, mais vous perdez la mémoire lorsque la session est invalidée ou expire. La sauvegarde des numéros de question répondus dans une base de données est la plus longue et la plus fiable. Je vous recommande de ne pas enregistrer l'ID de session, car cela n'a pas de sens. Un horodatage montrant quand la question a été répondue, avec la réponse, pourrait être plus pertinent.

0

Je vous recommande d'utiliser un cookie parce que vous pouvez le conserver sur la machine de l'utilisateur et à moins de le faire sur une autre machine, supprimer son cookie ou changer de navigateur, il sera là. Parce que vous n'avez pas de connexion c'est le moyen le plus simple de suivre l'utilisateur spécifique. Si vous essayez d'utiliser la session utilisateur, les informations de session expireront et ils pourront revenir et voter à nouveau.

+0

cookies semble la façon la plus simple de le faire. mais puis-je créer un cookie pour chaque question? Si l'utilisateur répond à 50 questions, dois-je créer 50 cookies? – user85748

+1

Essentiellement, la valeur d'un cookie est juste une chaîne, de sorte que vous pouvez facilement stocker une liste de valeurs délimitées. – DanSingerman

1

Vous pouvez également essayer de le faire par IP utilisateur. Ce qui signifie enregistrer l'adresse IP qui a répondu à la question. Problème avec l'utilisation de la session est l'utilisateur peut toujours effacer leur cache/cookies et revenir directement sur votre site et voter à nouveau. Ils pourraient usurper leur adresse IP aussi, mais c'est au moins un peu plus difficile. Une combinaison du stockage dans la session et dans votre base de données est le moyen le plus infaillible (et le plus simple) de l'OMI.

+0

Plusieurs utilisateurs peuvent utiliser une seule adresse IP, ou une seule session peut s'étendre sur plusieurs adresses IP, de sorte qu'en général les adresses IP sont plutôt inutiles pour ce genre de choses. – DanSingerman

+0

D'accord, ce n'est pas infaillible à 100%, mais les sessions le sont encore moins. – Gandalf

0

Vous pouvez conserver leurs réponses sur le serveur dans un fichier XML (un par utilisateur/ip /?). Vous devez toujours avoir une sorte d'authentification ou un moyen de lier un utilisateur à son fichier existant quand il démarre une nouvelle session.

Hope this helps,

Bill

+0

N'est-ce pas la même chose que de sauvegarder les réponses dans une base de données? Je préfère traiter les DB que les XML – user85748

0

est-il une autre façon de le faire?

Non. Certainement pas de bonnes façons au moins.

+0

-1: pas utile. –

+0

En quoi le fait de donner une réponse directe correcte n'est-il pas utile? Crazy ... – DanSingerman

+0

+1, downvote enlevé, vous avez raison, pas de façon infaillible à 100% de le faire. – karim79

0

Si j'utilise des cookies, shd je sauvegarde chaque identifiant de question (et réponse) dans un cookie séparé? cela signifierait beaucoup de cookies, non? dire si l'utilisateur répond à 50 ou 100 questions, ce serait beaucoup de cookies? Est-ce correct?

+0

Comme ci-dessus, la valeur d'un cookie est essentiellement une chaîne, ce qui vous permet de stocker facilement une liste délimitée de valeurs représentant les questions. (Oh, et c'est une bonne étiquette ici pour ajouter des clarifications à votre question, pas ajouter une réponse ici) – DanSingerman

+0

Désolé, je ne savais pas :-( valeurs délimitées devraient bien fonctionner – user85748

0

J'ai vérifié à polldaddy. J'ai effacé la session et les cookies, ça me rappelait toujours mon choix. On dirait qu'ils utilisent l'adresse IP

+0

Ils ne sont pas (il n'a pas rappelez-vous mon vote sur deux navigateurs de la même machine) – DanSingerman

Questions connexes