1

在这里,我找到了一个 JavaScript 按钮点击计数器,它计算了编号。单击按钮并将数字保存在称为网络存储的东西中,我不知道那是什么。

我确定的一件事是该脚本仅适用于一台计算机,这意味着如果我单击该按钮 10 次,那么如果任何其他访问者单击该按钮,它将不会向他显示我之前单击过的点击次数。

现在我需要的是,不知何故,无论是使用 javascript 还是 php,点击次数都应该保存在我服务器中的文本文件中,以后每当任何其他访问者访问 HTML 页面时,他也应该得到与文本文件。

这是HTML带有代码的页面。

<!DOCTYPE html>
<html>
<head>
<script>
function clickCounter()
{
if(typeof(Storage)!=="undefined")
  {
  if (localStorage.clickcount)
    {
    localStorage.clickcount=Number(localStorage.clickcount)+1;
    }
  else
    {
    localStorage.clickcount=1;
    }
  document.getElementById("result").innerHTML="You have clicked the button " + localStorage.clickcount + " time(s).";
  }
else
  {
  document.getElementById("result").innerHTML="Sorry, your browser does not support web storage...";
  }
}
</script>
</head>
<body>
<p><button onclick="clickCounter()" type="button">Click me!</button></p>
<div id="result"></div>
<p>Click the button to see the counter increase.</p>
<p>Close the browser tab (or window), and try again, and the counter will continue to count (is not reset).</p>
</body>
</html>

以一种简单的方式,

HTML 页面上有一个按钮。

如果访问者 A 点击它 5 次并关闭页面。

之后,访问者 B 访问了他应该首先得到数字 5 的页面,然后当他点击时,它应该被自动计数并保存。

4

3 回答 3

2

这是一件简单的事情。这个答案来自 w3schools。这里使用了 AJAX 和 PHP。为了保存该值,我们使用了一个名为“vote_result.txt”的文本文件。

索引.html

<html>
    <head>
    <script type="text/javascript">
    function getVote(int)
    {
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("poll").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","poll_vote.php?vote="+int,true);
    xmlhttp.send();


    if(typeof(Storage)!=="undefined")
      {
      if (localStorage.clickcount)
        {
        localStorage.clickcount=Number(localStorage.clickcount)+1;
        }
      else
        {
        localStorage.clickcount=1;
        }
      document.getElementById("result").innerHTML="You have voted " + localStorage.clickcount + " times before this session";
      }
    else
      {
      document.getElementById("result").innerHTML="Sorry, your browser does not support web storage...";
      }
    }

    </script>

    </head>
    <body bgcolor=#5D003D>
    <div id="poll">

    <p>Click the button to see the counter increase.</p>
    <p>Close the browser tab (or window), and try again, and the counter will continue to count (is not reset).</p><form>
    <input type="Button" class="voteButton" name="vote" value="Vote" onclick="getVote(this.value)" />
    </form>
    </div>
    </body>
    </html>

poll_vote.php

<?php
$vote = $_REQUEST['vote'];

//get content of textfile
$filename = "poll_result.txt";
$content = file($filename);

//put content in array
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];

if ($vote == 0)
  {
  $yes = $yes + 1;
  }
if ($vote == 1)
  {
  $no = $no + 1;
  }

//insert votes to txt file
$insertvote = $yes;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>    
<table>
<tr>
<td><div id="votesMsg">Total Votes  :</div></td>
<td><div id="votesCounter">
<?php echo($yes); ?></div>
</td>
</tr>
</table>
<input type="Button" class="voteButton" name="vote" value="Vote again !!!" onclick="getVote(this.value)" />

然后在工作目录中,创建一个名为 poll_result.txt 的文件

就这样。现在在 localhost 中运行此页面..

于 2012-09-29T08:14:22.777 回答
1

您应该在用户关闭页面之前将“点击”计数存储到您的数据库中,否则计数将清零。如果您在下次其他用户打开页面时将计数存储在数据库中,您可以从以前的计数。我希望你明白我在说什么。谢谢 sujathan。

于 2012-09-29T07:38:29.520 回答
0

您对本地存储有误解。本地存储是一种将信息存储到客户端浏览器的方法,该方法对于您网站的每个访问者都是唯一的。它与用户之间共享的服务器数据库完全不同。在您的情况下,用户 B 无法知道用户 A 单击了多少次,除非您将用户 A 的信息存储到服务器数据库并稍后在用户 B 单击页面时查询它。

于 2012-09-29T07:42:42.223 回答