Como posso usar PHP e JavaScript para fazer uma imagem clicável, e incrementar um contador armazenado como um arquivo simples?
-
13-09-2019 - |
Pergunta
Estou tentando encontrar um script PHP / js que vai me deixar ter uma imagem e, quando clicado, aumentar o número em um arquivo simples, e salvar esse arquivo.
Eu sei como incluir o arquivo para obter o total de votos.
Im ficando louco tentando encontrar isso para plug and play no meu site. amor Id ter ip extração de madeira e um fade legal in / out coisa atualização de atualização. Mas neste momento Settle doente para o básico.
Id gostaria de evitar usando o MySQL, mas se o seu necessário que eu possa trabalhar com ele.
Solução
Sua melhor aposta é usar o suporte AJAX em jQuery para acesso, mas não carregar para o usuário, algum tipo de URL que escreve o incremento para o arquivo. Se você estiver usando qualquer tipo de uma plataforma completa, você deve considerar fazer no com seu banco de dados. No entanto, seria bastante simples de usar $ .get do jQuery () para acesso a /increment_number.php?image=whatever.jpg URL. Se você nunca começar a usar um banco de dados, você apenas tem que mudar esse script para executar uma consulta DB. Para o seu caso, você teria um script simples como este (que tem sido em nenhuma maneira otimizada ou tem quaisquer considerações de segurança de qualquer natureza):
$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);
E lembre-se de ter o seguinte trecho de JS na página com a imagem:
$(document).ready(function(){
$('img.incrementme').click(function(){
$.get('/increment.php?'+$(this).attr('src'));
});
);
Eu não testei este código para que ele não pode funcionar, mas é no espírito do que você teria que fazer.
Outras dicas
simples Algo como isso não vai funcionar?
<?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);
?>
Se você está fazendo isso por um sistema de votação como Stack Overflow, criando lotes de arquivos para armazenar este um bit de informação vai se tornar inviável. Isto é perfeito para um banco de dados.
Dessa forma, você também não inclui o arquivo, mas executar uma consulta para obter a pontuação total.