Как я могу использовать PHP и JavaScript, чтобы сделать изображение кликабельным и увеличить счетчик, хранящийся в виде плоского файла?

StackOverflow https://stackoverflow.com/questions/1123132

  •  13-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь найти скрипт php/js, который позволит мне сделать изображение, при нажатии увеличить число в плоском файле и сохранить этот файл.

Я знаю, как включить файл, чтобы получить общее количество голосов.

Я схожу с ума, пытаясь найти это, чтобы подключить и воспроизвести его на своем веб-сайте.Мне бы хотелось иметь регистрацию IP-адресов и классную функцию обновления с плавным появлением/затуханием.Но на данный момент я остановлюсь на основах.

Я бы хотел избежать использования MySQL, но если это необходимо, я могу с ним работать.

Это было полезно?

Решение

Лучше всего использовать поддержку AJAX в jQuery для доступа, но не загрузки пользователю некоего URL-адреса, который записывает приращение в файл.Если вы используете какую-либо надежную платформу, вам следует рассмотреть возможность использования ее с вашей базой данных.Однако было бы достаточно просто использовать функцию jQuery $.get() для доступа к URL-адресу /increment_number.php?image=whatever.jpg.Если вы когда-нибудь начнете использовать базу данных, вам просто придется изменить этот сценарий для выполнения запроса к БД.В вашем случае у вас будет такой простой скрипт (который никоим образом не оптимизирован и не имеет каких-либо соображений безопасности):

$image = $_GET['image'];
$number = file_get_contents('tracker_for_{$image}.txt');
if ($number != ''){
    $number = (int) $number + 1
}
$file = fopen('tracker_for_{$image}.txt', 'w');
fwrite($file, $number);
fclose($file);

И не забудьте разместить на странице с изображением следующий фрагмент JS:

$(document).ready(function(){
     $('img.incrementme').click(function(){
         $.get('/increment.php?'+$(this).attr('src'));
     });
);

Я не тестировал этот код, поэтому он может не работать, но он соответствует тому, что вам придется делать.

Другие советы

Что-то простое вроде этого не сработает?

<?php
// Link to this file: <a href='onclick.php'><img src='yourimg'></a>
$count = file_get_contents("count.file");
$count += 1;
file_put_contents("count.file", $count);

// Possibly log an IP too? open a file
$f = fopen("ipaddresses.file", "a");
fwrite($f, $_SERVER["REMOTE_ADDR"] . "\n");
fclose($f);
?>

Если вы делаете это для системы голосования, такой как Stack Overflow, создание множества файлов для хранения этого одного бита информации станет громоздким.Это идеально подходит для базы данных.

Таким образом, вы также не будете включать файл, а выполните запрос, чтобы получить общий балл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top