单击锚点时如何存储cookie

时间:2018-03-01 11:15:10

标签: javascript php cookies

我正在计算锚点击次数,并将点击次数存储在.txt文件中。 单击锚点时,数字会增加1。 我没有使用用户管理系统,所以为了防止用户多次点击锚,我需要存储一个cookie。 但我确实有多个锚点。如果用户点击锚点1,则锚点1上的点击事件数量会增加1.他不应该在锚点1上再次点击一次,至少:它不应该再增加1。 但是对于那个用户,他仍然必须能够点击锚2和锚3并且它应该增加1.然后,当用户点击它时,这些锚也不应该再增加1。

我怎样才能实现这个目标?

这是我的HTML;

<?php
$clickcount = explode("\n", file_get_contents('counter.txt'));
foreach($clickcount as $line){
$tmp = explode('||', $line);
$count[trim($tmp[0])] = trim($tmp[1]);
}

?>

<a href="#count" class="click-trigger" data-click-id="count1">Like</a> 
<span class="click-count"><?php echo $count['count1'];?></span> likes.

<a href="#count" class="click-trigger" data-click-id="count2">Like</a> 
<span class="click-count"><?php echo $count['count2'];?></span> likes.

<a href="#count" class="click-trigger" data-click-id="count3">Like</a> 
<span class="click-count"><?php echo $count['count3'];?></span> likes.

js:

$(document).on('click', '.click-trigger', function()
{
   var data = {'id':$(this).attr('data-click-id')};
   var count = $(this).next(".click-count");


   $.ajax({
   type : 'POST',
   url  : 'counter.php',
   data : data,
   success :  function(data)
       {                                                
            $(".click-count").fadeIn(500).show(function()
            {
                count.html(data);

            });                     
       }
   });
   return false;
 });

这是档案counter.php

$file = 'counter.txt'; // path to text file that stores counts
$fh = fopen($file, 'r+');
$id = $_REQUEST['id']; // posted from page
$lines = '';
while(!feof($fh)){
   $line = explode('||', fgets($fh));
   $item = trim($line[0]);
   $num = trim($line[1]);
   if(!empty($item)){
     if($item == $id){
       $num++; // increment count by 1
       echo $num;

     }
     $lines .= "$item||$num\r\n";
   }
 } 
 file_put_contents($file, $lines);
 fclose($fh);

文件counter.txt如下所示:

count1||36
count2||124
count3||12

1 个答案:

答案 0 :(得分:0)

在设置php的cookie值时,可以在项目编号数组上使用serialize,在读取cookie时使用unserialize。您将获得一个整数数组,并可以使用in_array检查用户是否已经点击了该链接。