javascript — как сохранить cookie при нажатии на ссылку

Я считаю клики на якорях и сохраняю количество кликов в .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

Решение

Ты можешь использовать serialize на массиве номеров элементов при установке значения cookie из php, и unserialize при чтении куки. Вы получите массив целых чисел и можете проверить с помощью in_array был ли пользователь уже нажал на ссылку.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector