Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 什么';网络语言中允许未注册用户投票的一般技术是什么?_Web Services_Web_Vote - Fatal编程技术网

Web services 什么';网络语言中允许未注册用户投票的一般技术是什么?

Web services 什么';网络语言中允许未注册用户投票的一般技术是什么?,web-services,web,vote,Web Services,Web,Vote,我试图了解某些网站使用的一般机制,允许非注册用户或简单的访客投票(例如评论、视频、图像等)。他们是如何记录的?在这样的网站上,同一位客人不能在同一个终端上投票两次。他们存储他们的IP地址吗?或者他们保存计算机ID/名称 非常感谢您的任何想法 注:(mywot.com)就是这样一个例子。他们使用cookie或会话来识别已经投票的计算机。如果您对Javascript或PHP有点了解,我可以给您举一些例子 编辑: 好的,下面是一个例子: <button value="VOTE" onClick=

我试图了解某些网站使用的一般机制,允许非注册用户或简单的访客投票(例如评论、视频、图像等)。他们是如何记录的?在这样的网站上,同一位客人不能在同一个终端上投票两次。他们存储他们的IP地址吗?或者他们保存计算机ID/名称

非常感谢您的任何想法


注:(mywot.com)就是这样一个例子。

他们使用cookie或会话来识别已经投票的计算机。如果您对Javascript或PHP有点了解,我可以给您举一些例子

编辑: 好的,下面是一个例子:

<button value="VOTE" onClick="vote();">
<script>
var votes = 9654;  //Some vote counter - only for test purposes - practically, this wouldn't work, the votes would have to be stored somewhere, this number is only stored in the browser and won't actually change for everyone, who sees the page!
function vote()
{
 var cookies = document.cookie.split(";"); //Make an array from the string
 var alreadyVoted = false;
 for (var i = 0; i < cookies.length; i++)  //Iterate through the array
 {
  temp = cookies[i].split("=");
  if (temp[0] == "voted" && temp[1] == "true")  //The cookie is there and it is "true", he voted already
   alreadyVoted = true;
 }
 if (alreadyVoted)
 {
  alert("You can't vote twice, sorry.");
 }
 else
 {
  var date = new Date();
    date.setTime(date.getTime()+(5*24*60*60*1000));  //Cookie will last for five days    (*hours*mins*secs*milisecs)
    var strDate = date.toGMTString();  //Convert to cookie-valid string
  document.cookie = 'voted=true; expires=' + strDate + '; path=/';  //Creating the cookie
  votes++;  //Here would be probably some ajax function to increase the votes number
  alert("Thanks for voting!\nVotes: "+votes);
 }
}
</script>

var票数=9654//一些投票计数器-仅用于测试目的-实际上,这不起作用,投票必须存储在某个地方,这个数字只存储在浏览器中,并且不会为每个看到页面的人实际更改!
功能投票()
{
var cookies=document.cookie.split(;”;//从字符串中创建一个数组
var alreadyVoted=假;
for(var i=0;i

希望这有帮助,但这只是一个非常简单的cookie demnostration代码,实际上不适用于投票!您必须使用一些PHP或类似的东西来实际存储投票值…

通常的技术是使用cookies。IP地址是不够的,因为现在很多地方都使用NAT(办公室、网吧、大多数有DSL路由器的家庭)


Cookie最好在后端处理,但也可以在浏览器中用javascript处理

Cookies确实是解决方案。这是一个可行的系统:

在数据库中有一个投票表,记录每个访客ID的投票。 当访问者进入您的站点时,检查请求是否包含访问者id cookie。如果没有,则生成一个唯一的访问者id(使用uuid生成器),并在响应中放入一个访问者id cookie,将生成的id作为值。这个cookie应该是持久的

每次触发投票时(和/或每次生成投票链接时),检查当前访客(由其访客id cookie标识)是否已通过投票表投票。投票完成后,将其存储在投票表中


当然,没有什么能阻止任何访问者清除其cookie,或使用其他浏览器或机器多次投票。但是如果没有身份验证,这是您能做的最好的事情。

是的,我当然理解。我是一名ActionScript程序员,主要熟悉网络语言。请提供示例,而不是询问您是否应该:-)因此,浏览器必须允许存储这些cookie?或者网站的服务器从终端收集信息,并在为用户打开会话时将其存储?+1:非常感谢您精确清晰的回答。非常感谢。