2011-05-08 4 views
1

간단한 PHP 폴링 스크립트 (http://www.w3schools.com/php/php_ajax_poll.asp)를 사용하고 있지만 사람들을 예방할 방법이 없습니다 여러 번 투표에서. 사용자를 한 표로 제한하기 위해 스크립트에 쿠키를 추가하는 방법이 있습니까?PHP 투표 스크립트 (AJAX 사용)에 쿠키가 필요합니다.

+1

다음 대통령 선거가 아니라면, 너무 걱정하지 않아도된다고 생각합니다. 쿠키 & IP 주소로 할 것입니다. – Ibu

답변

0

플래그 값을 저장하기 위해 쿠키를 사용할 수 있지만 사용자가 투표했는지 여부를 감지 할 수 있지만 쿠키를 수정하고 삭제할 수 있으므로 세션을 사용해야합니다! 데이터베이스에서도 사용할 수 있습니다!

0

임시 DB 테이블에 쿠키와 IP 주소를 저장할 수 있습니다.이 테이블은 매일 플러시되거나 웹 사이트에 사용자 계정이있는 경우 투표 대상으로 표시 할 수 있습니다.

ip와 쿠키를 저장하려면 사용자가 쉽게 쿠키를 삭제할 수 있기 때문에 두 가지가 모두 있는지 확인해야합니다.하지만 쿠키를 쉽게 변경할 수는 없습니다. IP 주소.

나는 도움이 되길 바래요 :)

1

사람이 그들을 취소 무제한 번 투표 할 수 있기 때문에 쿠키를 제한하는 것은, 아마 그것을 할 수있는 가장 좋은 방법이 아니다. 반면에 데이터베이스를 사용할 수 있다면 가장 좋은 방법은 IP를 가져 와서 테이블에 놓고 언제 투표를 다시 시도하는지 확인하는 것입니다. 당신은 아직도 그런 식으로 수행하려는 경우

그러나, 다음과 같은 형식 (http://php.net/manual/en/function.setcookie.php)를 이기에, setcookie 수 있습니다

setCookie("pollCookie", "1", "999999", "/"). 

사람들이 투표를 할 때 그런 다음, 당신이 그것을 할 수있는 좋은 방법이 아니라는 것을 다시

if(isset($_COOKIE["pollCookie"])) 
{ 
echo "You already voted;" 
die; 
} 

참고로 확인할 수 있습니다. 또한 쿠키 만료일을 변경해야 쿠키를 지우지 않을 수 있습니다.

1

귀하의 질문에 대한 완벽한 대답은 없을 것이라고 생각합니다. 나는 쿠키가 극히 소수의 사용자 만 투표 할 수 있다고 생각하지만 우회하기는 매우 쉽습니다. 같은 컴퓨터에서 다른 브라우저를 사용하거나 브라우저에서 쿠키를 지울 수 있습니다. 아마도 세션 변수와 결합되거나 IP 주소를 로컬에 저장하는 것일 수도 있습니다. 그러나 이것도 완벽한 솔루션이 아닙니다. 여러 번 언급 된 별도의 IP에서 쉽게 투표 할 수 있습니다. 등록이 필요하고 세션 변수로 로그인해야하는 경우 등록 된 사용자 당 하나의 투표를 제한 할 수 있습니다. 등록 된 사용자 당 투표 수는 1 회당 1 회로 제한 될 수 있지만 사용자가 여러 이메일 주소를 가질 수 있으므로 완벽하지는 않습니다. 개인적으로, 투표 시스템을 구현해야 할 때 사람들이 공개적으로 투표 할 수 있도록 허용 한 다음 투표 패턴 (여러 카테고리가 있음)과 IP 주소를 기록하고 목적 스크립트를 통해 분명히 모호한 표를 제거했습니다. 어쩌면 위의 아이디어를 조합하여 귀하의 필요에 충분할 것입니다.

관련 문제