我正在计算锚点击次数,并将点击次数存储在.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
答案 0 :(得分:0)
在设置php的cookie值时,可以在项目编号数组上使用serialize
,在读取cookie时使用unserialize
。您将获得一个整数数组,并可以使用in_array
检查用户是否已经点击了该链接。