2010-04-02 3 views
8

임 웹 사이트 (HTML, CSS, 자바 스크립트, 아약스, PHP, MySQL)에서 작업하고 특정 사용자가 특정 동영상에 투표 한 횟수를 제한하고 싶습니다.웹 사이트. VoteUp 또는 VoteDown Videos. 사용자 투표를 여러 번 제한하는 방법은 무엇입니까?

특정 비디오를 투표하거나 투표 할 수있는 YouTube 시스템과 유사합니다.

각 투표에는 시간, 투표 방향 (위 또는 아래), 클라이언트 IP 주소 (PHP : $ ip = $ _SERVER [ 'REMOTE_ADDR'];)를 기록하는 video.votes 테이블에 행을 추가하는 작업이 포함됩니다. 물론 해당 비디오의 ID입니다.

투표를 추가하는 것은 간단합니다. (의사 코드) : 자바 스크립트 : onClick (vote (a, b, c, d)). 아약스를 통해 PHP 삽입 스크립트에 변수를 전달하고 마지막으로 투표 버튼을 "투표 해 주셔서 감사합니다"라는 메시지로 대체합니다.

인한 문제 : 당신은/다시로드 투표 후 페이지를 새로 고치면

, 당신은 다시 투표를 할 수 있으며, 다시, 다시, 당신은 점을 얻는다.

내 질문 : 특정 비디오 번 특정 사용자 투표의 양을 제한하려면 어떻게

?

내 생각 :

는 쿠키를 사용하십니까, 비디오의 ID로 새로운 쿠키를 추가 할 수 있습니다. 새 투표를 삽입하기 전에 쿠키를 확인하십시오. 당신이 투표를 삽입하기 전에

또는

는이 같은 사용자 (IP)가 지난 24 시간이 동일한 비디오 (생생) (mktime은) 투표했는지 확인하기 위해 여기서 IPaddress 및 동영상 ID를 사용하여 수행하고, 이 쿼리를 기반으로 voteInsertion을 허용하거나 거부 할 수 있습니까?

또는

당신은 상관 없습니까? 대부분의 사용자는 정상이며 페이지를 새로 고치고 반복적으로 투표하는 것보다 더 나은 일을한다고 가정합니다. ??

의견이나 제안을 환영합니다.

답변

4

쿠키를 사용하고 비디오의 ID가 새 쿠키를 추가합니까? 새 투표를 삽입하기 전에 쿠키를 확인하십시오.

쿠키를 쉽게 비활성화하거나 매우 빠르게 지울 수 있습니다. 투표를 쿠키에 저장하는 것은 신뢰할 수 없으며 아무런 문제없이 투표 할 수 있습니다. 당신이 투표를 삽입하기 전에

,이 같은 사용자 (IP)가 지난 24 (mktime은)이 동일한 비디오 (생생)에게 투표했는지 확인하기 위해 여기서 IPaddress 및 동영상 ID를 사용합니까, 그리고 중 하나를 허용하거나 이 쿼리를 기반으로 voteInthertion을 사용하지 마십시오?

많은 사용자가 실제로 동일한 IP를 사용하는 동일한 라우터를 사용할 수 있습니다. 이렇게하면 동일한 사무실/세대의 다른 사람이 이미 동영상을 보냄으로써 링크를 전송하기 때문에 투표를 중단함으로써 사용자를 짜증나게 할 수 있습니다.

관심이 있으십니까? 대부분의 사용자는 정상이며 페이지를 새로 고치고 반복적으로 투표하는 것보다 더 나은 일을한다고 가정하십시오.

이것은 전적으로 주관적이며 투표의 중요성에 따라 달라집니다. 투표가 사이트의 중요한 부분이라면 가능한 한 많이주의하는 것이 가장 좋습니다. 예를 들어, 동영상이 가장 높은 등급으로 분류 된 경우 일부 사용자는 자신의 개인/좋아하는 동영상의 인기를 높이기 위해 여러 번 투표를 할 수있어 더 많은 시청자를 끌어 모으는 인기를 얻었습니다.

투표가 중요한 경우 등록 된 사용자 만 투표하는 것이 좋습니다. 물론 사람들은 여러 개의 계정을 만들어 투표 할 수 있지만 (예를 들어 http://gallery.live.com을 참조하십시오), 그러나 당신은 그것을 위해 더 어려워지고 있습니다. 투표가 정말로 중요하지 않은 경우 쿠키 옵션을 사용합니다.

+0

videoX의 소유자가 그 인기를 크게 높일 수 있기 때문에 여러 명의 유권자가 피해야 할 대상입니다. Ill prob는 등록 및 로그인을 통해 투표하거나 동영상에 댓글을 남깁니다. 고마워요. 많은 사람들 ... –

+0

같은 사람이 두 번 이상 등록되는 것을 막기 위해 무엇을 할 것입니까? – Pointy

+0

@Pointy : Google, YouTube, Microsoft 및 eBay조차도 문제가 있습니다. 그들은 여전히 ​​등급에 대해 유사한 시스템을 사용합니다 (eBay에 대한 피드백). 실제로 투표를 한 번 이상 해보려는 사용자를 막을 수있는 방법은 거의 없습니다. 귀하의 은행 계좌 예에서도 사기성 은행 계좌가 항상 설정됩니다. –

3

특히 4chan 효과에 대해 신경 쓰지 않는다면 쿠키 만 사용할 수 있습니다. IP 주소를 사용하지 마십시오. 일반 NAT 라우터 뒤에 모든 사람들이 모여 있기 때문입니다.

좀 더 신경 쓰면 사람을 인증해야하지만 실제 개인을 식별하기위한 일종의 외부 토큰이 없으면 여전히 문제가 있습니다. 물론 사이트의 특성에 따라 다릅니다. 예를 들어, 홈 뱅킹 사이트는 실제 계좌 번호를 가진 사용자를 식별 할 수 있기 때문에 더 많은 신뢰를 가지고 투표를 지원할 수 있습니다.

3

쿠키 방식을 사용합니다. 쿠키를 허용하는 사용자의 경우 고유 한 사용자를 식별 할 수 있으며 IP는 많은 사용자가 동일한 IP 주소를 공유 할 수 있기 때문에 나쁜 접근 방법입니다.

사이트에서 로그인을 사용하는 경우 로그인 한 사용자 만 투표 할 수있는 옵션을 고려할 수 있습니다. 이 경우 사용자가 이미 투표했는지는 매우 쉽게 알 수 있지만 매우 제한적입니다.

2

아마도 가장 좋은 조언은 등록 된 사용자가 투표하도록 허용하는 것입니다.기록이 발견되면 WHERE user_id = 'x' and video_id = 'y'을 질의 할 수있는 그런 식으로, 투표하지 못하게하십시오.

아쉽게도 익명 사용자의 경우 까다로운 문제 일 수 있습니다. 많은 IP 주소가 네트워크에서 공유되기 때문에 다른 건물과 같은 건물에있는 사용자는 한 번만 투표 할 수 있습니다.
쿠키 옵션을 삭제할 수 있다는 점을 제외하면 쿠키 옵션이 유용 할 수 있습니다. 사용자 측에서 아무 것도 신뢰할 수 없습니다.

1

당신은 정말 여러 표를 방지하기 위해 시도하는 경우

  1. 인증 된 사용자 만 초기 점검을하고 부하를 줄이기 위해 쿠키
  2. 또한 저장 투표에 대해 확인하기 위해 데이터베이스에
  3. 스토어 투표를 투표하자 데이터베이스에.

정말로 신경 쓰지 않는다면 쿠키 만 사용하십시오.

관련 문제