【发布时间】:2018-08-09 10:48:22
【问题描述】:
我正在计算锚点的点击次数,并将点击次数存储在.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
【问题讨论】:
标签: javascript php cookies