2011-02-06 6 views
2

나는 로그인 할 필요가없는 투표 시스템을 가지고 있으며 IP 또는 일종의 차단을 통해 하루에 한 번 투표 할 수있는 곳으로 설정할 수있는 방법을 알고 싶습니다. 나는 데이터베이스를하지 않으려는사람이 다시 투표 할 수있는 시간을 어떻게 설정할 수 있습니까?

<script type="text/javascript"> 

var clicks = 0; 
function linkClick(){ 
document.getElementById('clicked').value = ++clicks; 
} 

document.write('<a href="#" onclick="linkClick()">Vote Now!</a>'); 

$('#clicked').parent().bind('click', function(evt) { 
$(this).unbind('click'); 
/* do long time task.... 

evt.preventDefault(); 
}); 


</script> 

You have clicked the link <input id="clicked" size="3" onfocus="this.blur();" value="0" > times 

이 코드는 한 번만 한 번만 사용하는 투표를하게됩니다 약자로, 내가 미리 감사는 24 시간마다 및 HTML로를 싶습니다

+1

PHP와 같은 서버 측 스크립팅을 사용하는 것이 더 좋습니다. 누구든지 HTML에 침입하여 원하는만큼 여러 번 투표 할 수 있습니다. – JCOC611

답변

0

쿠키를 생성하고 매일 투표를했는지 확인할 수 있습니다. JCO611은 정확하지만 쉽게 건너 뛸 수 있습니다. 일부 서버 측 코드를 사용하는 것이 좋습니다. 자바 스크립트에서 쿠키에 대한 자세한 내용은

: http://www.quirksmode.org/js/cookies.html

+0

두 분께 감사드립니다. 나는 내 로그인 시스템을 완성하는 동안 평균 시간 안에 쿠키를 사용할 것입니다. :) – Mason

+0

이것이 왜 투표되지 않았는지 확실하지 않습니다. OP는 Javascript로 어떻게해야하는지 질문했습니다. 나는 대답을했고 그에게 그렇게하는 문제에 대해 경고했다. – Roloc

3

그것은 자바 스크립트 나 HTML에서 안전한 방법으로이를 구현하는 것은 불가능합니다. 그 이유는 웹 사용자로서 쿠키를 지우거나 새 브라우저를 열거 나 사용자 인터페이스를 사용하지 않고도 프로그래밍 방식으로 서버에 전화를 걸 수 있기 때문입니다. 즉, 웹 페이지의 모양과 상관없이 하루에 두 번 실제로 제출하지 못하게하려면 서버에 뭔가가 필요합니다.

사용자 로그인을 사용하여 사용자가 두 번 게시하지 않았는지 확인하는 것이 좋습니다.

+0

사용자 로그인 좋은, 독특한 컴퓨터 ID 해시도 좋은 생각, MAC 주소,하지만 IP 주소는 NAT를 사용하여 거의 모든 사람과 꽤 털이 얻을 수 있습니다. –

+0

사실, 다른 고유 식별자를 사용하는 것을 좋아합니다. 다른 컴퓨터 나 새 로그인을 사용하는 사람의 문제에 부딪 치는 것 같아요. 어떤 시점에서 한 사용자가 다른 사용자와 다른지를 실제로 알 수 없으며 사용자가 동의해야합니다. –