这是因为我的程序员无法找出问题所在。任何帮助将不胜感激。
访客通过点击红绿灯上的一种颜色进行投票。他们应该只有一票。
该网站首先检查cookie,然后检查选民的IP地址。如果2与前一个访问者相同,则不允许投票。如果只重复其中一个,则允许投票。
实行双重限制的想法是允许固定IP背后的不同选民投票。例如。公司的员工无法投票,因为他们可能通过固定的IP地址访问该网站。
但是,目前,访问者可以点击所有3种颜色,在首次访问该网站时注册3票。我的程序员无法解决这个问题并且放弃了我。
如果有人可以提供帮助,我将不胜感激。我相信相关的代码附在下面。
如果我的帖子格式错误,请道歉。
非常感谢, 林恩
摘自http://www.enbloc.sg/js/functions.js
//update dashboard when vote by user
function vote_update(ip_address, issue_num, vote_status){
var vote_cookie = document.getElementById('vote_cookie').value;
if(vote_cookie != '')
{
if(document.getElementById('thanks').style.display == "none")
{
$("#multi_error").fadeIn("slow");
}
else
{
document.getElementById("thanks").style.display = "none";
$("#multi_error").fadeIn("slow");
}
}
else
{
if(ip_address != ' ' && issue_num != ' ')
{
http.open("POST", "update_vote.php"); // true
http.onreadystatechange = update_vote;
http.setRequestHeader("Content-Type", "application/x-www-form- urlencoded;charset=UTF-8");
http.send("ip="+ ip_address +"&issue_num="+ issue_num + "&vote_status=" + vote_status);
}
else
{
alert("Occur Error for IP or ISSUE!");
}
}
}
// ajax response function
function update_vote(){
if (http.readyState == 4)
{
if (http.status == 200)
{
var xmlDoc = http.responseXML;
var listElements = xmlDoc.getElementsByTagName("list");
var result = listElements[0].getElementsByTagName("total") [0].childNodes[0].nodeValue;
if (result == 1)
{
var issue_num = listElements[0].getElementsByTagName("issue")[0].childNodes[0].nodeValue;
var vote = listElements[0].getElementsByTagName("vote") [0].childNodes[0].nodeValue;
$("#thanks").fadeIn("slow");
load(issue_num, vote);
}
else if (result == 'Multi')
{
if(document.getElementById('thanks').style.display == "none")
{
$("#multi_error").fadeIn("slow");
}
else
{
document.getElementById("thanks").style.display = "none";
$("#multi_error").fadeIn("slow");
}
}
else
{
alert("error");
}
}
}
}
答案 0 :(得分:0)
这些更改将有所帮助:
var already_voted = false;
function vote_update(ip_address, issue_num, vote_status)
{
if(alread_voted) return;
already_voted = true;
// rest of the code
}
这将确保在一次访问期间只能投一票。饼干负责其余部分并且已经正常工作。