2011-08-13 6 views
1

내 웹 응용 프로그램 사용자가 투표를하기 전에 사용자 계정을 등록하지 않아도됩니다. 나는 내가 등록 할 필요없이 원하는 것을 자유롭게 투표 할 수있는 웹 사이트를 보았습니다. 어떻게 처리됩니까? 같은 사람이 무한한 시간에 투표하는 것을 어떻게 방지 할 수 있습니까?익명 사용자 입력을 어떻게 처리해야합니까?

저는 파이썬과 장고를 사용하고 있습니다. 페이스 북 로그인을 구현할 생각이지만 전문가의 의견을 듣고 싶습니다. 가장 유용한 답을 올바른 것으로 표시하겠습니다.

+0

메신저, 그러나 다만 IP를 추적하고 각 IP에 대해 하나의 투표를 할 수 있도록 제안 대신 투표의 그들은 코멘트를 상대하고 – Jaanus

답변

2

페이스 북이없는 사용자는 투표를 할 수 없기 때문에 페이스 북 로그인에 의존하지 마십시오.

등록되지 않은 사용자가 두 번 투표하지 않도록 실제 방법이 없으므로 (다른 컴퓨터에서 자신을 연결할 수있는 등) 자신을 확인하기 위해 사용하려는 기준이 무엇인지 스스로 정의해야합니다 정체.

문제를 해결하는 방법이 다르지만 모두 투표 된 사용자에 대한 정보를 저장하는 데 의존합니다. 사용자가 이미 투표했는지 여부를 알기 위해 IP 주소 나 세션 또는 쿠키에 정보를 저장할 수 있습니다.

1

나는 그들이 투표했는지 여부를 알려주는 세션 변수를 만들 것입니다. 사실, 사용자는 쿠키를 삭제하고 두 번 투표 할 수 있지만 최악의 경우입니다. 등록하지 않고 투표하게하면 설문 조사가 너무 과학적이지 않은 것 같습니다.

장고에는 세션 사용 방법에 대한 웹 사이트의 좋은 예가 있습니다.

https://docs.djangoproject.com/en/dev/topics/http/sessions/#examples

특히이 하나가 당신에게 도움이되어야한다. 장고에 익숙하지

def post_comment(request, new_comment): 
    if request.session.get('has_commented', False): 
     return HttpResponse("You've already commented.") 
    c = comments.Comment(comment=new_comment) 
    c.save() 
    request.session['has_commented'] = True 
    return HttpResponse('Thanks for your comment!') 
관련 문제